この記事で紹介するadd_actionフック一覧の使い方ガイド
WordPress の add_action() は、特定の「フック(hook)」ポイントに自分の関数を追加する仕組みです。ここでは代表的で実用的な アクションフック(Action Hooks) をカテゴリ別に一覧で紹介します(※すべてではありませんが、よく使われるものを可能な限り網羅しています)。
🔧 初期化系フック
フック名 |
説明 |
muplugins_loaded |
必須プラグイン(mu-plugins)読み込み後に実行。 |
plugins_loaded |
すべてのプラグイン読み込み完了後に実行。プラグイン間の依存関係設定など。 |
setup_theme |
テーマが読み込まれる直前に実行。 |
after_setup_theme |
テーマの初期化に使用。add_theme_support() などここで実行。 |
init |
WordPress の初期化時に実行。カスタム投稿タイプ・ショートコード登録など。 |
register_post_type |
カスタム投稿タイプを登録する際の処理を追加したいときに。 |
register_taxonomy |
カスタムタクソノミーを登録する際の処理を追加したいときに。 |
widgets_init |
ウィジェットエリア(サイドバー)を登録する際に使用。 |
wp_loaded |
WordPress の完全な読み込み後(リクエスト処理直前)に実行。 |
parse_request |
$wp オブジェクトにアクセスできるようになったタイミング。カスタムルーティングなど。 |
pre_get_posts |
クエリ実行前に WP_Query を操作。表示投稿のフィルタリングに便利。 |
template_redirect |
テンプレート読み込み前に実行。リダイレクトやテンプレート切り替えに使用。 |
🧑💻 管理画面関連
フック名 |
説明 |
admin_init |
管理画面読み込み時に実行。設定登録やバリデーションに使用。 |
admin_menu |
管理メニュー追加時に使用。add_menu_page() など。 |
admin_enqueue_scripts |
管理画面のJS/CSSを読み込むときに使用。 |
current_screen |
現在表示している管理画面の情報を取得可能。 |
load-{$page_hook} |
特定の管理画面読み込み時に実行。$page_hook は add_menu_page などで得られる。 |
admin_notices |
管理画面上部に通知(メッセージ)を表示するときに使う。 |
all_admin_notices |
すべての管理画面通知の後に実行。 |
restrict_manage_posts |
投稿一覧ページに絞り込み用UIを追加可能。 |
manage_{$post_type}_posts_custom_column |
カスタム投稿タイプの一覧にカスタム列の出力を追加。 |
manage_{$post_type}_posts_columns |
カスタム投稿タイプ一覧の列ヘッダー定義を変更。 |
bulk_edit_custom_box |
一括編集画面に独自フィールドを追加可能。 |
edit_form_after_title |
投稿編集画面のタイトル下にコンテンツ追加。 |
edit_form_after_editor |
投稿編集画面の本文エディタ下にコンテンツ追加。 |
submitpost_box |
「公開」ボックスのカスタマイズ。 |
add_meta_boxes |
メタボックスを登録するタイミング。 |
save_post |
管理画面から投稿が保存されたときに実行(データ保存など)。 |
admin_footer |
管理画面フッター部分でJSを出力したいときに使用。 |
admin_head |
管理画面の<head> 内にCSSなど追加可能。 |
🌐 表示・テーマ関連
フック名 |
説明 |
wp_head |
<head> 内に挿入。CSSやmetaなど追加可能。 |
wp_footer |
</body> 前に出力。JSなどを追加するのに便利。 |
wp_enqueue_scripts |
フロント用のCSS/JS登録に使用。 |
get_header |
header.php が読み込まれる直前に実行。 |
get_footer |
footer.php が読み込まれる直前に実行。 |
get_sidebar |
sidebar.php が読み込まれる直前に実行。 |
get_template_part_{$slug} |
get_template_part() 使用時に実行されるカスタムフック。 |
template_redirect |
テンプレートが表示される直前に実行。リダイレクト処理などに便利。 |
wp_body_open |
<body> タグ直後に出力。アクセシビリティ対応などで利用。 |
loop_start |
WordPressループ開始時に実行。投稿リストに変更を加えたい時に便利。 |
loop_end |
WordPressループ終了時に実行。 |
the_post |
ループ内の各投稿を処理する直前に実行。個別に加工可能。 |
💬 投稿・保存・編集
フック名 |
説明 |
save_post |
投稿・固定ページ・カスタム投稿タイプの保存時に実行。 |
save_post_{$post_type} |
特定の投稿タイプ保存時に実行。例:save_post_job 。 |
wp_insert_post |
投稿データが挿入・更新されるときに実行(保存前の段階)。 |
edit_post |
既存投稿が編集されたときに実行。 |
publish_post |
投稿が「公開」されたときに実行(post 投稿タイプのみ)。 |
publish_{$post_type} |
指定の投稿タイプが「公開」されたときに実行。例:publish_job 。 |
transition_post_status |
投稿のステータスが変更されるときに実行(どの状態でも)。 |
draft_to_publish |
ステータスが draft から publish に変わるときに実行。 |
new_to_publish |
新規投稿(new)が公開されたときに実行。 |
pending_to_publish |
「レビュー待ち」から「公開」に変更されたときに実行。 |
delete_post |
投稿削除時に実行(ゴミ箱移動を含む)。 |
trashed_post |
投稿がゴミ箱に入れられたときに実行。 |
untrash_post |
投稿がゴミ箱から復元されたときに実行。 |
before_delete_post |
投稿が完全削除される直前に実行。 |
wp_trash_post |
投稿がゴミ箱に送られるときに実行。 |
add_meta_boxes |
投稿編集画面にメタボックスを追加する際に実行。 |
add_meta_boxes_{$post_type} |
特定の投稿タイプの編集画面にメタボックスを追加。 |
edit_form_after_title |
投稿編集画面のタイトル入力欄の下にコンテンツを追加。 |
edit_form_after_editor |
本文エディタの下に追加コンテンツを挿入。 |
post_submitbox_misc_actions |
「公開」ボックス内のカスタム項目を追加可能。 |
post_updated |
投稿が更新された後(新旧データあり)。wp_insert_post() の後に発火。 |
🧑 ユーザー関連
フック名 |
説明 |
user_register |
ユーザーが登録された直後に実行。ユーザーデータの追加保存などに使用。 |
wp_login |
ユーザーがログインした直後に実行。ログイン履歴の記録などに使える。 |
wp_logout |
ユーザーがログアウトした時に実行。 |
auth_cookie_valid |
認証クッキーが有効と判断された後に実行。 |
authenticate |
ログイン処理中の認証ステップで実行(バリデーションや制限などに使用)。 |
login_form_login |
ログインフォームが表示されたときに実行。 |
login_form_register |
新規ユーザー登録フォームの表示時に実行。 |
login_form_lostpassword |
パスワードリセット画面表示時に実行。 |
retrieve_password |
パスワードリセットリクエストが送信されたときに実行。 |
password_reset |
パスワードがリセットされた後に実行。 |
profile_update |
ユーザープロフィールが更新されたときに実行。 |
personal_options_update |
ユーザーが自身のプロフィールを更新したときに実行。 |
edit_user_profile_update |
管理者が他人のユーザープロフィールを更新したときに実行。 |
delete_user |
ユーザーが削除されるときに実行。 |
deleted_user |
ユーザー削除完了後に実行。 |
show_user_profile |
ユーザー自身のプロフィール画面表示時に追加出力する場合に使用。 |
edit_user_profile |
管理者が他人のプロフィール画面を編集表示するときに追加出力。 |
user_request_action_confirmed |
個人データのエクスポート・削除要求が確定されたときに実行。 |
🛠️ その他便利フック
フック名 |
説明 |
shutdown |
PHP 処理終了時に実行。ログ保存やエラーハンドリングに便利。 |
wp |
WPクエリオブジェクトが準備された直後に実行。 |
parse_query |
クエリ変数の解析が完了した直後に実行。 |
pre_get_posts |
クエリ実行直前。表示条件を変更したいときに便利。 |
send_headers |
HTTPヘッダーが送信される直前に実行。 |
http_api_debug |
WP_HTTP の通信デバッグ時に発火。外部APIのログなどに。 |
rest_api_init |
REST API のエンドポイントを登録するタイミング。 |
rest_insert_{$this->post_type} |
REST API経由で投稿が登録されたときに発火。 |
template_redirect |
テンプレートファイルが読み込まれる直前に実行。リダイレクト処理など。 |
wp_redirect |
wp_redirect() 実行時に発火。リダイレクトのURLを確認・変更したいとき。 |
locale |
現在の言語ロケールを変更・取得したいときに使用(※これは filter でも使える)。 |
upgrader_process_complete |
プラグインやテーマのアップグレード完了後に実行。 |
schedule_event |
スケジュールイベントが追加されたときに実行。 |
wp_schedule_event |
定期実行イベントの登録時に発火(wp-cron関連)。 |
cron_schedules |
wp-cron の実行間隔に独自スケジュールを追加したいとき。 |
🔍 フックを調べるには?
WordPressにはたくさんのフックが存在しますが、以下の方法で「どこで」「どんな名前のフックが使われているか」を簡単に調べることができます。
-
WordPress公式フック一覧
WordPress開発者向けの公式リファレンスです。
do_action()
(アクションフック)や apply_filters()
(フィルターフック)ごとに、発火タイミングや引数が詳しく記載されています。
-
プラグイン「Query Monitor」
管理画面上で現在実行されているフックや、使用されているテンプレートファイル、SQLクエリなどがリアルタイムで確認できます。開発者必須のデバッグツールです。
-
WordPressのソースコード内を検索
フックはコード内で do_action('hook_name')
や apply_filters('hook_name')
の形で記述されています。
エディター(VS Codeなど)で do_action
を検索すれば、どんなフックがどこで実行されているかを確認できます。
例えば wp_head
は header.php
テンプレートで呼び出されています。
「この処理の前後で何かしたいな」と思ったら、その処理の前後に do_action()
が使われていないかを探すと、最適なフックが見つかるはずです。
さいごに
WordPress の add_action() フック は、テーマやプラグイン開発において非常に重要な役割を果たします。本記事で紹介したフックを活用すれば、より柔軟なカスタマイズが可能になります。ぜひ活用してみてください!