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

説明

did_action() は、指定したアクションが、現在のリクエスト中に何回実行されたかを返す関数です。

基本構文

did_action( string $hook_name ): int

引数

  • $hook_name:アクションフック名

戻り値

実行された回数(int)。一度も実行されていなければ 0。

使い方(サンプル)

if ( ! did_action( 'init' ) ) {
	// まだ init が実行されていない
}

注意点

  • フック実行中も、そのフックはカウントに含まれます。
  • 「まだそのフックを過ぎていないか」の判定によく使います。

実務での使いどころ

  • あるアクションが、すでに実行されたか(何回実行されたか)を、確認するとき。
  • フックの実行済みかによって、処理を分けるとき。

よくあるミスと対処

  • フィルターの実行回数を調べるつもりで、使っている。フィルターには、did_filter() を使う。
  • 実行が完了したフックに、後から add_action() しても、処理は呼ばれない。
  • 戻り値は、実行された回数(整数)。真偽値として扱うと、複数回で混乱する。

NG例

if ( did_action( 'init' ) ) {
	add_action( 'init', 'my_func' ); // init の実行が完了していれば、呼ばれない
}

OK例

if ( did_action( 'init' ) ) {
	my_func(); // すでに実行済みなので、直接呼ぶ
} else {
	add_action( 'init', 'my_func' );
}

使い分け早見表

関数 役割
did_action() 何回、実行されたか
doing_action() いま、実行中か
has_action() 処理が、登録されているか

関連項目

doing_action()、has_action()、current_action()

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

コメント

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