お問い合わせはコチラから

WordPressのfilterフックを一部にのみ適用する方法

サイト運営

Cocoonがテンプレート読み込みフックを追加したのは記憶に新しいところです。

今まで子テーマにテンプレートをコピーして行っていたカスタマイズは、新しいフックを使うことで、スマートに実現できます。

Cocoonの設定値を特定のテンプレート読み込み時のみ、別の値に変更したい

テンプレートを読み込む直前に、Cocoonの設定値を書き換え、テンプレート読み込み後に設定値を元に戻します。

これを実現するには、Cocoon設定値の読み出しをフックして、特定の条件の時だけ別の値を返す必要があります。

フックにより特定の条件の時だけ別の値を返す方法は2つ考えられます。

  • callback関数内で条件判定する
  • フックを特定の条件のみ有効にする

callback関数の引数に必要な情報が無い場合はcallback関数内での条件判定は簡単にはできません。

フックそのもの特定の条件のみ有効化するには、特定の処理の前にadd_filterし、処理後にremove_filterすれば行けそうです。

WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
こんにちは、日々WordPressをカスタマイズしているエンジニアのひろゆきです。

しかし、そうは問屋が卸しません。

Cocoonの特定のテンプレート読み込み時のみCocoon設定値を変更する

CocoonにはPVをカウントする機能があり、tmp/css-custom.phpを読み込んだ際、Cocoon設定でPVカウントが有効化されている場合のみPVカウントが有効化されます。

tmp/css-custom.phpを読み込むときだけ、PVカウント機能を無効化して、それ以外の時にはPVカウント機能を有効化するようなカスタマイズの例です。

add_action("cocoon_part_before__tmp/css-custom",function(){
	add_filter( 'theme_mod_access_count_enable', 'wpdocs_display_title_and_tagline',11,1);
});

function wpdocs_display_title_and_tagline($current_mod) {
	remove_filter( 'theme_mod_access_count_enable', 'wpdocs_display_title_and_tagline' ,11);
	return false;
}

add_filterとremove_filterを組み合わせる時の注意点

add_filterしたものを、特定の処理の後でremove_filterしても期待した動きになりませんでした。

add_filter('xxxx','func_xxx');
filterを通る処理
remove_filter('xxxx','func_xxx');

この書き方だと、add_filterがすぐに取り消されて有効になりません。

add_filterで呼ぶcallback関数内部でremove_filterすればうまくいきます。

add_filter('xxxx','func_xxx');
filterを通る処理

function func_xxx(){
remove_filter('xxxx','func_xxx');
}

callback関数内部で自分をremove_filterすれば、add_filterを適用する範囲を限定できます。

まとめ

add_filterとremove_filterを組み合わせることで、add_filterの適用範囲を限定できます。しかし、そのまま並べて書くとadd_filterが有効にならないため、callback関数の中でremove_filterする必要があります。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました