特定のフィルターに関数がフックされているかどうかを判別する

has_filter

関数の概要

特定のフィルターに特定の関数がフックされているかどうかを判別することができます。

関数の基本形

has_filter( $tag, $function_to_check );

使用できるパラメーター

パラメーター 説明 初期値
tag(必須) フィルター名を指定する。 なし
function_to_check(オプション) フィルターにフックする関数名を指定する。 false

こうやって使っています

まずは前提から

例えば「function_reference」という投稿タイプのタイトル名を変更するためには、以下のようにフィルターフックを使って「custom_titles」の関数を呼び出してあげればできます。

add_filter( 'the_title', 'custom_titles', 10 ,2 );
function custom_titles( $title, $id = null ){
 if ( !is_admin() && get_post_type() == 'function_reference' ) {
  return get_the_excerpt() . '-' . $title;
 }
 return $title;
}

上記のフィルターフックが登録されていることを前提として「has_filter」を使って判別してみます。

フィルターに関数がフックされているかどうかを判別

パラメーターにはフィルター名「the_title」のみ指定しています。

var_dump( has_filter( 'the_title' ) );

出力結果

フィルター名に関数がフックされていればtrueが返ってきます。

bool(true)

フィルターに特定の関数がフックされているかどうかを判別(true または falseを取得)

パラメーターに関数名「add_excerpt_title」を指定しています。

var_dump( has_filter( 'the_title', 'add_excerpt_title' ) );

出力結果

「add_excerpt_title」という関数をフックしていない場合はfalseが返ってきます。

bool(false)

フィルターに特定の関数がフックされているかどうかを判別(優先順位を取得)

パラメーターに関数名「custom_titles」を指定しています。

var_dump( has_filter( 'the_title', 'custom_titles' ) );

「custom_titles」という関数がフックされている場合は、関数が実行される優先順位が返ってきます。

出力結果

int(10)

参考URL

has_filter

著者:bouya Imamura

WordPress関数リファレンス TOP