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

説明

doing_action() は、指定したアクションフックの実行中かどうかを判定する関数です。

基本構文

doing_action( string|null $hook_name = null ): bool

引数

  • $hook_name:フック名。null なら何かのアクション実行中かを判定

戻り値

実行中なら true。

使い方(サンプル)

if ( doing_action( 'save_post' ) ) {
	// save_post の処理中
}

注意点

  • フィルターの実行中も内部的には同じ仕組みなので doing_filter() と併用することがあります。
  • 無限ループ防止の目印としても使えます。

実務での使いどころ

  • あるアクションの、実行の最中かを、確認するとき(再帰の防止など)。

よくあるミスと対処

  • 「すでに実行された」かの確認に使っている。実行済みかは、did_action()。
  • 引数を省略したときは、どのアクションでも、実行中なら true。特定のアクションを調べるときは、名前を指定する。

NG例

if ( doing_action() ) { // 引数なしだと、どのアクション・フィルターの最中でも true になる
	return;
}

OK例

// 別の場所のコードから、save_post の最中かを確認する
if ( doing_action( 'save_post' ) ) {
	return;
}

使い分け早見表

関数 役割
doing_action() いま、実行中か
did_action() 何回、実行されたか
current_action() いま、実行中のアクション名

関連項目

did_action()、current_action()、doing_filter()

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

コメント

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