回答:
テーマやプラグインがwp_options
テーブルにオプションを追加できるため、未使用のものをすべて削除し、それらを削除しないことを100%確実にするクエリはありません。それでも、少しの労力で、使用されていないものについてかなり良いアイデアを得て、削除するものと削除しないものを手動で決定できます。
次のコードを一時的にテーマのfunctions.php
ファイルに挿入してから、公開サイトのすべての(種類の)ページにアクセスし、さらに重要なのは管理コンソールのすべての管理ページにアクセスします。それが終わったら、wp_options
テーブルを開いてフィールドuse_count
(以下のコードで追加)を見て、どのオプションがuse_count
ゼロに等しいかを確認します(使用カウントは、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
ファイルから上記のコードも削除します。
これはまだ完璧ではありませんが、何もないよりはましです。それが役に立てば幸い?
プラグインのClean Optionsは私にとってはうまく機能しました。作成者によるプラグインの説明は、必要なものに適合しているようです。「孤立したオプションを見つけて、wp_optionsテーブルから削除できるようにします。」
私はまだ個人的にWP-Optimizeを試していませんが、有望に見えます。そして、それはWP 2.7をサポートしていると述べています(一方、Clean OptionsはWP 2.3の明確なサポートについてのみ言及しています)。
これで必ずしも問題がなくなるわけではありませんwp_options
が、私はWP-Optimizeを使用して、3.0サイトのデータベースサイズ設定に関する多くの問題を修正しました。不要な投稿の修正、スパムコメントを取り除き、多くの問題を自動的に修正できます。私のメインブログでは、DBは30MBから6MB未満に減り、現在はよりスムーズに実行されています。