WPML

WPML 3.9 ได้นำเสนอความสามารถในการแสดงเนื้อหาที่มาจากภาษาต้นฉบับเมื่อดูหน้าในภาษาอื่น หากไซต์ของคุณอาศัยการทำสำเนาเนื้อหาก่อนเวอร์ชัน 3.9 คุณอาจต้องการลบเนื้อหาที่ทำสำเนาทั้งหมดออกจากไซต์ของคุณก่อนที่จะใช้โหมดการแปลใหม่นี้

วิธีใช้บทช่วยสอนนี้

ขั้นตอนที่ระบุในหน้านี้จะลบการตั้งค่าและเนื้อหาออกจากฐานข้อมูล ดำเนินการต่อเมื่อคุณเข้าใจสิ่งที่คุณกำลังทำอยู่เท่านั้น และเริ่มต้นด้วยการสร้างข้อมูลสำรองฐานข้อมูลของไซต์ของคุณอย่างสมบูรณ์

หากต้องการใช้คิวรี SQL ที่ให้มา คุณต้องแก้ไขดังนี้:
  • แทนที่ XXXX ด้วยประเภทโพสต์ที่คุณต้องการลบเนื้อหาที่ทำสำเนา (เช่น "post", "product" หรือ "page")
  • แทนที่ YYYY ด้วยรหัสภาษาเริ่มต้นของไซต์ (เช่น "en")
  • แทนที่ wp_ ด้วยคำนำหน้าตารางที่กำหนดค่าโดยใช้ตัวแปร $table_prefix ในไฟล์ wp-config.php (ค่าเริ่มต้นคือ wp_)

สุดท้าย คุณต้องเรียกใช้คิวรีเหล่านี้โดยใช้หนึ่งในเครื่องมือสำหรับการทำงานกับฐานข้อมูล SQL เช่น phpMyAdmin

1. การลบเนื้อหาที่ทำสำเนา

ลบเนื้อหาที่ทำสำเนาจาก wp_posts
DELETE FROM wp_posts
WHERE post_type = 'XXXX' AND ID IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE pm.meta_key = '_icl_lang_duplicate_of' AND pm.meta_value > 0 AND
    t.element_type LIKE 'post_%' AND t.language_code = 'YYYY'
)

2. การลบการตั้งค่าการแปล

ลบการตั้งค่าการแปลจาก wp_icl_translations
DELETE FROM wp_icl_translations
WHERE element_type = 'post_XXXX' AND element_id IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE meta_key = '_icl_lang_duplicate_of' AND meta_value > 0 AND t.language_code = 'YYYY'
)

3. การลบข้อมูลเมตาของโพสต์ที่ไม่มีการอ้างอิง


โปรดทราบว่าการดำเนินการคิวรีนี้อาจล่าช้าและอาจหมดเวลา ขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์ของคุณ นอกจากนี้ ไม่จำเป็นต้องเรียกใช้คิวรีนี้เนื่องจากใช้เพื่อล้างข้อมูลเมตาของโพสต์ที่ไม่มีการอ้างอิงออกจากฐานข้อมูลของคุณเท่านั้น
การลบข้อมูลที่ไม่มีการอ้างอิงจาก wp_postmeta
DELETE pm
FROM wp_postmeta pm
  LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

เขียนโดย Amir · อัปเดตล่าสุด 23 พฤษภาคม 2022