Salah satu klien saya ada di blog yang agak besar dalam hal jumlah posting dan lalu lintas. Saya mencoba untuk menurunkan basis datanya ke ukuran yang dapat dikelola, dan satu hal yang meningkat adalah puluhan ribu revisi pos.
Saya sudah mengatur konfigurasi Wordpress untuk membatasi jumlah revisi di masa depan menjadi dua:
define('WP_POST_REVISIONS', 2);
Tetapi saya ingin menghapus semua revisi yang ada.
Pertanyaan 1 : Apakah aman untuk menghapus secara langsung semua baris di tabel wp_posts yang memiliki post_type revisi? (Saya telah melihat jawaban yang bertentangan tentang hal ini — tetapi saya ingin sekali melakukannya dengan cara ini jika aman).
Pertanyaan 2 : ... dan ini hanya berlaku jika saya TIDAK hanya melakukan penghapusan langsung dari pertanyaan pertama:
Saya menemukan jawaban ini di mana songdogtech menyediakan permintaan basis data untuk dihapus dengan aman, tetapi (1) itu secara khusus menjawab pertanyaan multisite (ini adalah satu situs) dan (2) Saya baru saja memutakhirkan situs menjadi 3,6, yang termasuk perubahan basis data . (Jadi, saya tidak cukup ahli dalam membaca query database untuk mengetahui apa yang sebenarnya terjadi di sana dan apakah itu akan bekerja untuk satu situs di WP 3.6
sumber
1. Backup DB 2. Backup DB Again
, Saya suka bagian ini, +1 untuk ini.$ wp post delete $(wp post list --post_type='revision' --format=ids)
Rincian yang diberikan sejauh ini tidak lengkap di terbaik, dan permintaan a, b, c tidak baik - bahkan berpotensi berbahaya. Ia lupa faktor dalam banyak ketergantungan potensial. Ada diskusi lengkap dan pertanyaan yang lebih baik di sini
Ada juga versi revisi dari kueri ini yang seharusnya jauh lebih baik, tetapi uji dalam lingkungan dev dan cadangan yang berisiko rendah:
Secara khusus:
Kueri ini menangani data lama di mana WordPress mungkin menggunakan object_id yang sama di tabel wp_term_relationships untuk pos dan tautan. Dengan menjalankan versi lain dari kueri a, b, c ini, Anda juga dapat secara tidak sengaja menghapus data tautan. Ini bukan masalah dengan pemasangan WordPress yang lebih baru.
Jika Anda menjalankan versi kueri itu dan mendapatkan 0 penghapusan, itu berarti Anda tidak memiliki entri 'link_category' di tabel wp_term_taxonomy Anda. Anda bisa memverifikasi dengan memeriksa tabel itu, dan kemudian cukup menghapus baris terakhir itu dan menjalankan kueri lagi.
Tetapi pastikan Anda membuat cadangan, menguji, dan memverifikasi hasilnya sebelum digunakan pada data produksi. Kueri ini mengambil salah satu tabel wp_posts saya yang direvisi dari 300 MB hingga 5 MB setelah optimasi.
sumber
Jalankan query SQL:
CATATAN: Permintaan di atas “hanya menghapus posting yang ditandai sebagai revisi. Jika karena alasan tertentu Anda mengaitkan revisi dengan tag atau kategori yang kemudian dihapus ketika pos terakhir diterbitkan, Anda akan memiliki entri tambahan di tabel lain seperti istilah. " Kueri yang tepat untuk menghapus semua revisi Anda dengan aman adalah sebagai berikut (ubah awalan tabel seperlunya):
sumber