จะลบการแก้ไขโพสต์ได้อย่างไร


9

ฉันไม่ได้กำหนดจำนวนการแก้ไขซึ่งทำให้โพสต์ของฉันมีการแก้ไขมากกว่า 20 ครั้งดังนั้นจะลบการแก้ไขเหล่านี้ได้อย่างไร

อย่างไรก็ตามฉันใช้ WPMU และมีบล็อกจำนวนมากดังนั้นจะลบการแก้ไข WordPress สำหรับบล็อกทั้งหมดของฉันได้อย่างไร

คำตอบ:


10

นี่เป็นแบบสอบถามที่ปลอดภัยกว่ามากที่จะใช้และจะลบรายการที่เกี่ยวข้องออกจาก postmeta และ term_relationship ซึ่งแตกต่างจากการค้นหาDeathlocksในคำตอบของเขา

เปลี่ยน {id} เป็น id ของแต่ละตารางโพสต์บล็อก คุณสามารถรวมแบบสอบถามนี้เพื่อเรียกใช้ตารางการโพสต์ทั้งหมดในครั้งเดียว แต่ลองนี้ในหนึ่งตารางก่อน ฉันใช้มันหลายครั้งในการติดตั้ง WP ครั้งเดียว

DELETE a,b,c
FROM wp_{id}_posts a
LEFT JOIN wp_{id}_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_{id}_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

หลังจากที่คุณเรียกใช้ให้ปรับฐานข้อมูลใน phpmyadmin

และเพิ่มบรรทัดนี้ใกล้กับด้านบนของ wp-config.php เพื่อป้องกันการแก้ไขในอนาคต:

define('WP_POST_REVISIONS', 0);

หรือบันทึกหนึ่งการแก้ไข:

define('WP_POST_REVISIONS', 1);

คุณพูดถูกแล้วมันก็มีประสิทธิภาพมากเช่นกัน ... โพสต์คำตอบของฉันอย่างเร่งรีบและไม่ได้สังเกตส่วน WP MU ด้วย +1
Deathlock

และวิธีลบการแก้ไขยกเว้นสมมติว่า 3 ครั้งสุดท้ายหรือไม่
Matoeil

2

นอกจากนี้ยังมีปลั๊กอินWP Optimizeที่สามารถช่วยคุณได้

จากเว็บไซต์:

WP-Optimize เป็นเครื่องมือล้างและเพิ่มประสิทธิภาพฐานข้อมูล WordPress 2.9 ++ ไม่ต้องใช้ PhpMyAdmin เพื่อปรับตารางฐานข้อมูลให้เหมาะสม

จะช่วยให้คุณลบโพสต์การแก้ไขความคิดเห็นในคิวสแปมความคิดเห็นที่ไม่ได้รับอนุมัติภายในไม่กี่คลิก


โปรดอธิบายสิ่งที่ปลั๊กอินทำและวิธีแก้ปัญหา
fuxia

1
มีปลั๊กอินจำนวนมากที่ทำความสะอาดการแก้ไขและปรับให้เหมาะสมโดยไม่ต้อง phpmyadmin; ไม่มีการระบุอย่างชัดเจนว่าทำงานกับ WPMU หรือหลายไซต์
markratledge

ปลั๊กอินนี้จะเป็นอันตรายต่อฐานข้อมูลของฉันหรือไม่
hugemeow

ฉันใช้ปลั๊กอินกับเว็บไซต์สองแห่งที่ฉันทำงานโดยไม่มีปัญหา แต่ควรสำรองฐานข้อมูลของคุณไว้ก่อนเสมอ
darronz

0

หากต้องการลบการแก้ไข Wordpress ทั้งหมดของคุณคุณสามารถใช้แบบสอบถามนี้:

DELETE FROM wp_posts WHERE post_type = "revision";


ฉันมีมากกว่า 100 บล็อกใน wpmu ดังนั้นฉันควรจะทำงานDELETE FROM wp_n_posts WHERE post_type = "revision"; สำหรับ n ครั้งใช่มั้ย แต่มันค่อนข้างน่าเบื่อ :(
hugemeow

0

คุณสามารถเพิ่มรหัสนี้ในfunctions.phpไฟล์ธีมของคุณ:

if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 3);
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);

รหัสนี้จะตรวจสอบว่าWP_POST_REVISIONSมีการตั้งค่าขีด จำกัดwp-config.phpหรือไม่หากยังไม่ได้ส่งผ่านพารามิเตอร์ไปยังฟังก์ชันที่ จำกัด การแก้ไขการโพสต์ ในตัวอย่างด้านบนโพสต์มีการแก้ไขได้ถึง 3 ครั้ง

นี่เป็นทางออกที่ดีเมื่อสร้างธีมสำหรับผู้ที่ไม่รู้วิธีเพิ่ม (หรือไม่ต้องการ) เพิ่มโค้ด

นำมาจากwp-functions.com


2
คำตอบนี้ไม่ได้พูดถึงการลบการแก้ไข แต่คำแนะนำที่ดีเกี่ยวกับวิธีปิดใช้งานการแก้ไขสำหรับเนื้อหาในอนาคต
Nilambar Sharma

0

คุณสามารถใช้ปลั๊กอินWP Sweepเพื่อล้างการโพสต์การแก้ไข หลังจากเปิดใช้งานปลั๊กอินให้ไปที่เครื่องมือ»กวาดเพื่อล้างฐานข้อมูล WordPress ของคุณ


0

ขอบคุณสำหรับคำตอบ markratledge มีบางอย่างในไวยากรณ์ที่เกี่ยวกับ {id} ใช้งานไม่ได้สำหรับฉัน ฉันเปลี่ยน {id} เป็น 4009 หนึ่งในรหัสไปรษณีย์ของฉัน แต่ไม่ประสบความสำเร็จ ฉันพบวิธีแก้ปัญหาในhttps://dev-notes.eu/2017/11/manage-and-safely-delete-revisions-in-wordpress/

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

มันใช้งานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.