いろいろテストするサイトは、いろんなオプションを付けたり消したりするので、不要なオプション値が山のようにたまります。
また、ラジオボタンにしておくと、未選択の状態にするのが面倒。
今までは「phpMyAdmin」に入って検索して削除してましたが、、、
「すべての設定」ページ
「/wp-admin/options.php」なんてのがあるんですね。
「ブログタイトル」のような基本のものから、自分で足したオプションまで、ほとんどがリストアップされ、値を書き換えられる。
自分で足したものならキーも分かるので、これで事足りる。
全てのオプションを取得する
「wp_load_alloptions()」で、すべてのオプションと、その状態が取得できます。
取得できない例外もあるかも。
で、ラジオボタンで設定したものだけリストアップしたいのですが、
「wp_load_alloptions()」では、ラジオボタンで設定したかかどうか、なんてのはわからない。
しょーがないので、オプションの命名をやり直し、ある程度プレフィクスで分類。
- theme_option_radio_xxx:ラジオボタンで設定
- theme_option_post_xxx:標準投稿に関するもの
- theme_option_banner_xxx:ヘッダー画像に関するもの
みたいな感じ。
オプション値の削除
これは「delete_option( ‘削除したいオプションのキー’ )」で消せる。
ので、消したい系統のものをピックアップする。
/* ---------- リセット実行文 ---------- */
$radio_reset = get_option( 'theme_option_radio_reset' );
if( $radio_reset ){
$options = wp_load_alloptions();
$option_keys = array_keys( $options );
$delete_keys = preg_grep('!theme_option_radio_!', $option_keys );
foreach( $delete_keys as $delete_key ){
delete_option( $delete_key );
}
}
$all_reset = get_option( 'theme_option_all_reset' );
if( $all_reset ){
$options = wp_load_alloptions();
$option_keys = array_keys( $options );
$delete_keys = preg_grep('!theme_option_!', $option_keys );
foreach( $delete_keys as $delete_key ){
delete_option( $delete_key );
}
}
- キーに”theme_option_radio”が含まれていたら、そのオプション値を削除する
- キーに”theme_option_”が含まれていたら、そのオプション値を削除する
という感じです。
削除されるタイミング
上記はただどこかに書いているだけなので、記述したファイルがロードされたタイミングでオプション値が消えます。
「リセットする」をこれまたオプションにして、
- チェックが入っていたら削除を実行
- さらに「リセットする」オプション自体の値も削除
とすると、よくあるリセットボタンに。
ただ、一度リロードしないとオプション画面自体はリセットされたように見えない。最後にリロードさせる細工が要る。
以上、テスト環境のリセット、という目的で考えたお話でした。
こういうのはプラグインを作る人にとっては当たり前の話なんだろうな、と思います。やはりプラグイン作成勉強しなくちゃ。
まかり間違うと、消しちゃいかんオプションまで消えるので実行は慎重に!