Amazonで商品を見る セール会場へ

WordPressのアクションフック|実行される順番と、場面別によく使う25個

フックは、WordPressの決まった場面に自分の処理を差し込む仕組みです。

テーマのファイルを書き換えずに機能を足せるので、更新で消えません。

ただし、種類が2,000以上あります。

全部覚える必要はありません。

実際に使うのは20個ほどで、大事なのは「どの順番で走るか」です。

この記事では、実行される順番と、場面別によく使うものをまとめました。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

アクションフックとフィルターフックの違い

先にここを押さえておくと、迷いません。

スクロールできます
アクションフックフィルターフック
役割その場面で処理を実行する値を受け取って、書き換えて返す
登録add_action()add_filter()
戻り値要らない必ず返す。返さないと値が消える
読み込みが終わったらCSSを足す記事の本文の末尾に一文を足す

「何かをする」ならアクション、「何かを変える」ならフィルターです。

// アクション:処理を走らせるだけ。返さない
add_action( 'wp_enqueue_scripts', function () {
	wp_enqueue_style( 'my-style', get_stylesheet_uri() );
} );

// フィルター:受け取って、変えて、必ず返す
add_filter( 'the_content', function ( $content ) {
	return $content . '<p>最後まで読んでいただきありがとうございました。</p>';
} );

フィルターで return を忘れると、本文がまるごと消えます。

真っ白になったら、まずここを疑ってください。

実行される順番

順番を外すと、動かない・エラーになる、のどちらかです。

代表的なものを、走る順に並べます。

スクロールできます
フックこの時点でできること
1muplugins_loaded必須プラグインだけ読み込み済み。まだ何も使えない
2plugins_loadedプラグインが揃う。テーマはまだ
3after_setup_themeテーマの機能を宣言する場所(アイキャッチ対応など)
4initいちばん使う。投稿タイプ・タクソノミー・セッションの登録
5wp_loaded全部の読み込みが終わった直後
6template_redirectどのテンプレートを使うか決まる直前。リダイレクトはここ
7wp_enqueue_scriptsCSSとJSを読み込む場所。条件分岐が使える
8wp_head<head> の中に出力する
9wp_body_open<body> の直後。計測タグはここ
10wp_footerページの末尾。重いJSはここへ
よく使うアクションフックの実行順(2026年9月時点)

迷ったら init に書く、で大きく外しません。

ただし init は管理画面でも Ajax でも走ります。

フロントだけで動かしたいときは、条件を添えてください。

add_action( 'init', function () {
	if ( is_admin() ) {
		return;   // 管理画面では何もしない
	}
	// ここにフロント向けの処理
} );

場面別によく使うフック

CSSとJSを足す

スクロールできます
フック使いどころ
wp_enqueue_scriptsフロント。名前はscriptsだがCSSもここ
admin_enqueue_scripts管理画面
enqueue_block_editor_assetsブロックエディタの中だけ
login_enqueue_scriptsログイン画面

wp_head に直接 <style> を書くより、wp_enqueue_scripts を使ってください。

読み込み順とキャッシュをWordPressが面倒を見てくれます。

記事の保存に合わせて動かす

スクロールできます
フックいつ走るか
save_post投稿の保存時。自動保存とリビジョンでも走るので除外が要る
save_post_{投稿タイプ}その投稿タイプだけ。こちらのほうが安全
transition_post_status公開・下書きなど状態が変わったとき
publish_post公開になった瞬間
before_delete_post完全に削除される直前

save_post は、そのまま書くと保存のたびに何度も走ります。

add_action( 'save_post_post', function ( $post_id, $post, $update ) {
	// 自動保存とリビジョンでは動かさない
	if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
		return;
	}
	// 権限の確認も入れる
	if ( ! current_user_can( 'edit_post', $post_id ) ) {
		return;
	}
	// ここに処理
}, 10, 3 );

管理画面をいじる

スクロールできます
フック使いどころ
admin_menuメニューの追加・削除
admin_init管理画面の初期化。設定の登録
admin_notices管理画面に通知を出す
add_meta_boxes編集画面に入力欄を足す
admin_bar_menu上部のツールバーをいじる

リダイレクトと表示の分岐

スクロールできます
フック使いどころ
template_redirect条件を見て別のURLへ飛ばす。出力前なので安全
pre_get_posts表示する記事の絞り込みを変える。フィルターではなくアクション
wpクエリが決まった直後

pre_get_posts は名前からフィルターに見えますが、アクションです。

渡されたクエリのオブジェクトを直接書き換えます。

add_action( 'pre_get_posts', function ( $query ) {
	// 管理画面とサブクエリは触らない
	if ( is_admin() || ! $query->is_main_query() ) {
		return;
	}
	if ( $query->is_category() ) {
		$query->set( 'posts_per_page', 20 );
	}
} );

優先度と引数の数

add_action() の3つめと4つめが、つまずきどころです。

add_action( 'フック名', '関数名', 優先度, 受け取る引数の数 );
スクロールできます
引数既定意味
優先度10小さいほど先に走る。あとから上書きしたいなら大きくする
引数の数12つ以上受け取るなら必ず書く。書かないと2つめ以降が渡らない

「引数がnullになる」の原因は、ほぼこの4つめの書き忘れです。

他のプラグインの処理より後に走らせたいときは、優先度を大きくします。

// 他のプラグインが 10 で書き換えたあとに、こちらで上書きする
add_action( 'wp_enqueue_scripts', 'my_override', 99 );

フックを探すときは

全部を覚えるより、探し方を知っておくほうが早いです。

  • 公式のリファレンスで名前を引く(developer.wordpress.org/reference/hooks/
  • テーマやプラグインのファイルを do_action で検索する。そこが差し込める場所
  • 使っているテーマの一覧記事を見る(下にまとめています)

自作のフックを作るときは do_action() を置くだけです。

// 自分のテーマやプラグインの中に置く
do_action( 'my_theme_before_footer', $args );

// 使う側
add_action( 'my_theme_before_footer', function ( $args ) {
	echo '<p>フッターの直前です</p>';
} );

テーマ別のフック一覧は、それぞれまとめています。

SWELLでフックを使ってコンテンツを差し込む場所は、こちらです。

まとめ

  • 「何かをする」はアクション、「何かを変える」はフィルター
  • フィルターは return を忘れない。忘れると値が消える
  • 順番は after_setup_theme → init → template_redirect → wp_enqueue_scripts → wp_head の流れ
  • 迷ったら initただし管理画面でも走るので条件を添える
  • save_post は自動保存とリビジョンを除外する
  • 引数を2つ以上受け取るなら、4つめの数を必ず書く

この記事は2026年9月16日時点の公式リファレンスで確認しました。

公式の一覧はこちらです。

WordPressのカスタマイズ全体は、こちらにまとめています。

  • URLをコピーしました!

実装を任せたい方へ

WordPressのカスタマイズ代行

ブロックの追加、テーマの改修、管理画面の調整など、記事で紹介している内容の実装を承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次