Bagaimana cara menghapus posting revisi?

9

Saya belum menetapkan batas jumlah revisi, yang membuat beberapa posting saya memiliki lebih dari 20 revisi, jadi bagaimana cara menghapus revisi ini?

Omong-omong, saya menggunakan WPMU dan memiliki banyak blog, jadi bagaimana cara menghapus revisi WordPress untuk semua blog saya?

hugemeow
sumber

Jawaban:

10

Ini adalah permintaan yang jauh lebih aman untuk digunakan dan akan menghapus entri terkait dari postmeta dan term_relationship, tidak seperti kueri deathlocks dalam jawabannya.

Ubah {id} menjadi id dari setiap tabel posting blog. Anda dapat menggabungkan kueri ini untuk menjalankan semua tabel posting sekaligus, tetapi cobalah ini pada satu tabel terlebih dahulu. Saya telah menggunakannya berkali-kali pada instalasi WP tunggal.

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'

Setelah Anda menjalankannya, optimalkan database di phpmyadmin.

Dan tambahkan baris ini di dekat bagian atas wp-config.php untuk mencegah revisi di masa depan:

define('WP_POST_REVISIONS', 0);

atau simpan satu revisi:

define('WP_POST_REVISIONS', 1);
markratledge
sumber
Anda benar, ini juga sangat efisien ... mengirim jawaban saya dengan tergesa-gesa dan tidak memperhatikan bagian WP MU juga. +1.
deathlock
dan bagaimana cara menghapus revisi kecuali katakanlah 3 terakhir?
Matoeil
2

Ada juga sebuah plugin, WP Optimize yang dapat membantu Anda melakukan ini

Dari situs web:

WP-Optimize adalah alat pembersihan dan pengoptimalan basis data WordPress 2.9 ++. Itu tidak memerlukan PhpMyAdmin untuk mengoptimalkan tabel database Anda.

Ini memungkinkan Anda untuk menghapus revisi posting, komentar dalam antrian spam, komentar yang tidak disetujui dalam beberapa klik.

darronz
sumber
Tolong jelaskan apa yang dilakukan plugin dan bagaimana cara menyelesaikan masalah.
fuxia
1
Ada banyak plugin yang membersihkan revisi dan mengoptimalkan tanpa phpmyadmin; tidak satu pun dari mereka yang secara jelas dinyatakan bekerja dengan WPMU atau multisite.
beri tahu
Apakah plugin ini akan merusak database saya?
hugemeow
Saya telah menggunakan plugin di beberapa situs yang saya jalankan tanpa masalah. Tapi itu selalu merupakan ide yang baik untuk membuat cadangan db Anda terlebih dahulu (tapi itu hanya praktik terbaik).
darronz
0

Untuk menghapus semua revisi Wordpress Anda, Anda bisa menggunakan kueri ini:

DELETE FROM wp_posts WHERE post_type = "revision";

kebuntuan
sumber
saya memiliki lebih dari 100 blog di wpmu, jadi saya harus menjalankannya DELETE FROM wp_n_posts WHERE post_type = "revision"; untuk n kali, kan? tapi ini cukup membosankan :(
hugemeow
0

Anda juga dapat menambahkan kode ini ke functions.phpfile tema Anda :

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

Kode ini memeriksa apakah WP_POST_REVISIONSbatas telah ditetapkan wp-config.php, Jika belum maka melewati parameter ke fungsi yang membatasi revisi posting. Dalam contoh di atas, pos dibatasi hingga 3 revisi.

Ini adalah solusi yang baik ketika membangun tema untuk orang yang tidak tahu bagaimana (atau tidak mau) menambahkan kode.

Diambil dari wp-functions.com

NickMcB
sumber
2
Jawaban ini tidak berbicara tentang menghapus revisi. Namun saran yang bagus tentang cara menonaktifkan revisi untuk konten di masa mendatang.
Nilambar Sharma
0

Anda dapat menggunakan plugin WP Sweep untuk membersihkan revisi posting. Setelah mengaktifkan plugin, pergi ke Alat »Sapu untuk membersihkan database WordPress Anda.

Ashin
sumber
0

Terima kasih atas jawabannya, markratledge. Sesuatu dalam sintaks mengenai {id} tidak berfungsi untuk saya. Saya mengubah {id} menjadi 4009, salah satu id posting saya, tetapi tidak berhasil. Saya menemukan solusi di 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';

Itu bekerja dengan baik.

feli_x
sumber