説明
add_action() は、指定したアクションフックに、実行したい関数(コールバック)を登録する関数です。WordPressの処理の途中に独自の処理を差し込むときの基本になります。
基本構文
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true
引数
$hook_name:フック名(例:wp_head、init)$callback:実行する関数名・クロージャ・配列形式のメソッド$priority:実行順。小さいほど先に実行(既定10)$accepted_args:コールバックに渡す引数の数(既定1)
戻り値
常に true を返します。
使い方(サンプル)
function my_add_meta() {
echo '<meta name="robots" content="noindex">';
}
add_action( 'wp_head', 'my_add_meta' );
注意点
- フックが実行されるより前(
functions.phpの読み込み時など)に登録する必要があります。 - コールバックに2つ以上の引数を渡したいときは
$accepted_argsを指定しないと受け取れません。 - 関数名は他のプラグインと衝突しないよう、接頭辞を付けるかクラスのメソッドにします。
- 登録した処理を外すには
remove_action()を同じ優先度で呼びます。
実務での使いどころ
- 既存の処理の途中に、自分の処理を差し込むとき(
initやwp_enqueue_scriptsなど)。 - 同じフックに複数の処理を登録し、優先度で実行順を決めるとき。
- フックが渡す引数を使って処理するとき(
save_postの投稿IDなど)。
よくあるミスと対処
- フックが複数の引数を渡すのに、第4引数(受け取る引数の数)を指定していない。既定は1つのため、コールバックが2つ以上の引数を必須として宣言していると、PHP 7.1以降は致命的エラー(ArgumentCountError)になります。
- フック名のスペルミス。エラーは出ず、ただ実行されないだけなので、気づきにくい不具合になります。
- アクションのコールバックで、戻り値を返そうとしている。アクションの戻り値は使われません。値を加工して返したいときは
add_filter()を使います。 - 関数名が、他のプラグインやテーマと重複している。致命的エラーになるため、接頭辞を付けるか、無名関数を使います(ただし、無名関数は後から
remove_action()で外しにくくなります)。
NG例
add_action( 'save_post', 'my_save' );
function my_save( $post_id, $post, $update ) {
// 引数が足りず、エラーになる(PHP 7.1以降)
}
OK例
add_action( 'save_post', 'my_save', 10, 3 );
function my_save( $post_id, $post, $update ) {
// 3つの引数を受け取れる
}
使い分け早見表
| 比べる点 | add_action() | add_filter() |
|---|---|---|
| 目的 | 処理を差し込む | 値を加工して返す |
| コールバックの戻り値 | 使われない | 必須(加工した値を返す) |
| フックを実行する関数 | do_action() |
apply_filters() |
関連項目
do_action()、remove_action()、add_filter()、apply_filters()
公式リファレンス:add_action() | Function | WordPress Developer Resources

コメント