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