WordPress で制作していると get_option という大変便利な関数があって助かりますが…
この関数で設定したものを、特定条件のときだけ変更したい場合、それを使っている箇所を変更すればいいんですが、いろんな場所で使っている…というとき。
実は get_option の値は、一箇所で変更できます。
get_option の内容を変更する
もうすっ飛ばして解決したい方は↑からどうぞw
フィルターフックの説明を見ていたらこんな項目がありました。
option_(option name) の項目
get_option 関数で取得した設定値に対し、配列ベースの設定を解読した後に適用される。例えば foo という設定について get_option(“foo”) の出力値をフィルターする場合、”option_foo” という名前のフィルターを追加して使用する。
プラグイン API / フィルターフック一覧
なるほど… ということは add_filter で option_{オプション名} で変更できるということか。
やってみたらできました。
今更こんなことを知ってしまうと、「今まで変なことしてないよな…」と考えちゃう。
カスタマイズコード
なにをしたいかによりますが、変更したい option をとっ捕まえて変えちゃうコードです。
サンプルとして無用な誤解を避けるために hoge を使います。
/**
$hoge = get_option( 'hoge', 'foo' );
の設定変更
*/
function set_hoge_change( $option ) {
// 投稿IDが 1111 だったら get_option( 'hoge' ) の値を 'baa' にする
$change_post_id = 1111;
$post_id = get_the_ID();
if ( $post_id == $change_post_id ) {
return 'baa';
}
return $option; // 投稿IDが該当しない場合は設定値を返す
}
add_filter( 'option_hoge', 'set_hoge_change', 10, 1 );
こんな感じかな。
投稿IDで変更してますが、いろいろ応用できると思います。
以上です!