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

コメント