WordPressデータベーステーブルの孤立キーを削除するにはどうすればよいですか?
特にテーブルwp_options
で。約2年間のブログ制作の後で、それはかなり増加したようです、そして、私はそこにがらくたがいくつあるかわかりません。
WordPress 3.0で動作するプラグイン、または孤立したキー/行を検索するために実行する安全なクエリを知っていますか?
すべてのテーマやプラグインがwp_options
テーブルにオプションを追加できるため、未使用のものをすべて削除し、それらのものを削除しないことを100%保証するクエリはありません。それでも、少しの労力で、使用されていないものについてかなり良いアイデアを得て、それらのうちどれを削除するか、どれを削除しないかを手動で決定することができます。
次のコードをテーマのfunctions.php
ファイルに一時的に追加してから、一般公開サイトのすべての(種類の)ページ、さらに重要なことには管理コンソールのすべての管理ページにアクセスできます。 wp_options
テーブルを開いてフィールドuse_count
(以下のコードで追加)を調べて、どのオプションのuse_count
が0に等しいかを確認します(1より大きい場合以外は、ほとんど意味がありません)。このコードを追加してから少なくとも1回は読み取りまたは更新を行ってください。)
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'");
}
これにより、古くなったプラグインに関連したオプション、以前のテーマ、そしてあなたが早く追加したが使用しなくなった独自のオプションさえも識別できるでしょう。 (念のため)それらをすべてバックアップにエクスポートしてから、削除しても問題ないものを削除します。完了したら、use_count
フィールドを削除し(必要に応じて、そこにあっても構いません)、functions.php
ファイルからも上記のコードを削除できます。
これはまだ完璧ではありませんが、それは何もないよりはるかに優れています。それが役に立てば幸い?
プラグイン クリーンオプション は私にはうまくいった。プラグインの作者の説明はあなたが必要としているものに合っているようです:「孤立したオプションを見つけて、wp_optionsテーブルからそれらを削除することを可能にします。」
WP-Optimize まだ個人的に試したことはありませんが、それもまた有望に見えます。そして、それはWP 2.7をサポートすると言っています(一方、Clean OptionsはWP 2.3の明確なサポートについて言及しているだけです)、いいね!
これは必ずしもwp_options
の問題を解決するわけではありませんが、私の3.0サイトでのデータベースのサイズ設定に関する問題の多くを解決するために WP-Optimize を使用しました。不要な投稿の改訂、スパムのコメントを削除し、自動的に多くの問題を修正できます。私のメインブログでは、DBは30MBから6MBをわずかに下回るまで縮小され、現在はずっとスムーズに動作しています。
私は自分のサイトでClean OptionsとWP_Optimizeの両方を実行していますが、このコンボはデータベースをきれいに保つという素晴らしい仕事をしています。