Bagaimana saya bisa menghapus kunci anak yatim di tabel database WordPress?

10

Khususnya dalam tabel wp_options. Setelah hampir 2 tahun memproduksi blog, tampaknya banyak meningkat, dan saya tidak tahu berapa banyak sampah di sana.

Apakah Anda tahu plugin yang berfungsi dengan WordPress 3.0 atau permintaan yang aman untuk dijalankan untuk mencari kunci / baris yatim?

Itik jantan
sumber

Jawaban:

7

Tidak ada permintaan yang akan 100% pasti untuk menghapus semua yang tidak digunakan dan tidak menghapus hal-hal itu karena tema atau plugin apa pun dapat menambahkan opsi ke wp_optionstabel. Namun, dengan sedikit usaha Anda bisa mendapatkan ide yang cukup bagus tentang apa yang tidak digunakan dan kemudian secara manual memutuskan mana dari hal-hal yang akan dihapus dan yang tidak.

Anda dapat menempatkan kode berikut untuk sementara di functions.phpfile tema Anda dan kemudian mengunjungi setiap (jenis) halaman di situs Anda yang menghadap publik dan yang lebih penting adalah semua halaman admin di konsol admin. Setelah selesai, Anda dapat membuka wp_optionstabel dan melihat bidang use_count(ditambahkan oleh kode di bawah) untuk melihat opsi mana yang use_countsama dengan nol (jumlah penggunaan sebagian besar tidak berarti selain dari sesuatu yang lebih besar dari 1 telah dibaca atau diperbarui setidaknya sekali sejak Anda menambahkan kode ini.)

global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}

add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
    if (preg_match('#^option_(.*)$#',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}

Dengan ini, Anda mungkin dapat mengidentifikasi opsi yang terkait dengan plugin yang sudah lama hilang, tema lama dan bahkan opsi Anda sendiri yang telah Anda tambahkan sejak awal tetapi tidak lagi digunakan. Ekspor semuanya ke cadangan (untuk berjaga-jaga) dan kemudian hapus yang Anda hapus nyaman. Setelah selesai, Anda dapat menghapus use_countbidang (jika mau, tidak ada salahnya untuk berada di sana) dan juga menghapus kode di atas dari functions.phpfile Anda juga.

Meskipun ini masih belum sempurna itu jauh lebih baik daripada tidak sama sekali. Semoga ini bisa membantu?

MikeSchinkel
sumber
Saya sangat merekomendasikan memcached / incr () untuk ini daripada jumlah db menulis berpotensi besar.
Denis de Bernardy
3
@Denis - Karena memcached memerlukan pengaturan server tingkat lanjut yang bahkan tidak mungkin dilakukan pada server bersama di mana sebagian besar situs WordPress di-host, dan karena ini adalah rutin diagnostik sekali-sekali atau sekali-sekali, saya tidak mengerti mengapa Anda menekankan perlunya untuk memcached untuk kasus penggunaan ini ? Mungkin saya kehilangan sesuatu, dapatkah Anda menjelaskan mengapa seseorang yang harus pindah ke VPS atau dedicated server dan mempelajari cara atau membuat seseorang mengkonfigurasi memcached harus melakukannya hanya untuk menghindari sejumlah besar hit database yang jarang perawatan rutin yang digunakan?
MikeSchinkel
4

Plugin Clean Options telah bekerja dengan baik untuk saya. Deskripsi pembuat plugin tampaknya sesuai dengan yang Anda butuhkan: "Temukan opsi-opsi yatim dan memungkinkan untuk dihapus dari tabel wp_options."

Saya belum mencoba WP-Optimize secara pribadi, tetapi yang satu terlihat menjanjikan juga. Dan katanya mendukung WP 2.7 (sedangkan Clean Options hanya menyebutkan dukungan yang pasti untuk WP 2.3), bagus!

Mike Lee
sumber
2

Ini tidak serta merta menghapus masalah wp_optionstetapi saya telah menggunakan WP-Optimize untuk memperbaiki banyak masalah ukuran database di situs 3.0 saya. Ini menghapus revisi posting yang tidak dibutuhkan, komentar spam, dan dapat secara otomatis memperbaiki banyak masalah. Di blog utama saya, DB dikurangi dari 30MB menjadi hanya di bawah 6MB dan berjalan jauh lebih lancar sekarang.

EAMann
sumber
1

Saya menjalankan Opsi Bersih dan WP_Optimize di situs saya, dan kombo melakukan pekerjaan yang hebat untuk menjaga database dalam kondisi sangat baik.

Keith S.
sumber