説明
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

コメント