has_filter() の使い方|説明・引数・注意点

説明

has_filter() は、指定したフィルターフックにコールバックが登録されているかを調べる関数です。

基本構文

has_filter( string $hook_name, callable|string|array|false $callback = false ): bool|int

引数

  • $hook_name:フック名
  • $callback:確認するコールバック(省略可)

戻り値

未指定時は登録の有無(bool)、指定時は優先度(int)か false。

使い方(サンプル)

if ( false !== has_filter( 'the_content', 'wpautop' ) ) {
	// wpautop が有効
}

注意点

  • 優先度が 0 のとき false と混同しないよう、厳密比較で判定します。

実務での使いどころ

  • 特定のフィルターに、処理が、登録されているかを確認するとき。
  • 登録されている、優先度を取得するとき。

よくあるミスと対処

  • $callback を指定したとき、戻り値は、優先度(整数)。優先度が 0 のとき、if ( has_filter( ... ) ) は、偽になる。false !== で比べる。
  • 登録前に呼び、false になる。

NG例

if ( has_filter( 'the_content', 'my_func' ) ) { // 優先度が 0 だと、偽になる
	// ...
}

OK例

if ( false !== has_filter( 'the_content', 'my_func' ) ) {
	// 登録されている
}

使い分け早見表

関数 役割
has_filter() 登録されているか確認する
did_filter() 何回、適用されたか確認する
doing_filter() いま、適用中か確認する

関連項目

add_filter()、remove_filter()、has_action()

公式リファレンス:has_filter() | Function | WordPress Developer Resources

コメント

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