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

コメント