has_action()


WordPressのhas_action()関数は、指定したアクションフックにフックされたコールバックが登録されているかどうかを確認するために使用されます。

シンタックス

has_action( string $tag, callable|string $function_to_check = false );

引数の説明:

  • $tag (string) — 確認するアクションフックの名前。
  • $function_to_check (callable|string) — 確認する特定のコールバック関数名。省略可能。

例1: 特定のフックが登録されているかを確認する

指定したフックinitにコールバックが登録されているか確認します。

<?php
if ( has_action( 'init' ) ) {
    echo 'initフックにコールバックが登録されています。';
}
?>

例2: 特定のコールバック関数を確認する

my_custom_functionという関数がinitフックに登録されているか確認します。

<?php
if ( has_action( 'init', 'my_custom_function' ) ) {
    echo '指定された関数がinitフックに登録されています。';
}
?>

例3: 優先度を取得する

my_functionがwp_headフックで使用される場合の優先度を取得します。

<?php
$priority = has_action( 'wp_head', 'my_function' );
if ( $priority ) {
    echo '優先度は ' . $priority . ' です。';
}
?>

例4: 条件による処理の分岐

特定のフックが登録されている場合のみ、追加処理を実行します。

<?php
if ( has_action( 'template_redirect' ) ) {
    // フックが登録されている場合の処理
    do_action( 'custom_action' );
}
?>

例5: 複数フックの確認

複数のアクションフックの状態を確認します。

<?php
$hooks = [ 'wp_footer', 'wp_head', 'init' ];
foreach ( $hooks as $hook ) {
    if ( has_action( $hook ) ) {
        echo $hook . 'フックにコールバックが登録されています。<br>';
    }
}
?>

注意事項

  • フック名とコールバック関数名を正確に指定する必要があります。
  • has_action()は登録状況を確認するだけで、コールバックを実行するわけではありません。
  • 優先度を取得した場合、値が返されますが、登録されていない場合はfalseが返されます。

関連機能: