WordPressのアクションフックの種類と実行順

WordPressでテーマの `function.php` でのアクションフックの実行順がよくわからんかったので調べてメモ。
Codex日本語版の「[プラグイン API/アクションフック一覧](https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7)」にないものも入ってる。

説明に「(?)」があるものは、なんとなくそうかな的な感じ（少しは調べた結果）。
ないものはCodex日本語版の説明そのまま。

## 一般的リクエスト中に実行されるアクション

Codex日本語版の一覧は[こちら](https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7#.E4.B8.80.E8.88.AC.E7.9A.84.E3.83.AA.E3.82.AF.E3.82.A8.E3.82.B9.E3.83.88.E4.B8.AD.E3.81.AB.E5.AE.9F.E8.A1.8C.E3.81.95.E3.82.8C.E3.82.8B.E3.82.A2.E3.82.AF.E3.82.B7.E3.83.A7.E3.83.B3)

|実行順|フィルタ名|説明|
|---:|---|---|
|1|[after_setup_theme](https://developer.wordpress.org/reference/hooks/after_setup_theme/)|通常、テーマ設定・オプションを初期化するために使われる。これはテーマで最初に使えるアクションフックであり、有効なテーマの `functions.php` ファイルが読み込まれた直後にトリガーされる。`init` アクションフックは一部の機能には遅すぎるため、[add_theme_support](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_theme_support)  はここで呼び出されるべきである。この段階では、現在のユーザーに対する認証は行われていない。|
|2|[auth_cookie_malformed](https://developer.wordpress.org/reference/hooks/auth_cookie_malformed/)|Cookie未認証時 (?)|
|3|[determine_current_user](https://developer.wordpress.org/reference/hooks/determine_current_user/)|ログインユーザーの決定時 (?)|
|4|[auth_cookie_valid](https://developer.wordpress.org/reference/hooks/auth_cookie_valid/)|Cookie認証完了時 (?)|
|5|[set_current_user](https://developer.wordpress.org/reference/hooks/set_current_user/)|デフォルトの [wp_set_current_user](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_set_current_user) 関数でユーザーが変更された後に実行する|
|6|[registered_post_type](https://developer.wordpress.org/reference/hooks/registered_post_type/)|投稿タイプ設定時 (?)|
|7|option_category_base|カテゴリ設定読み込み時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_category_base/)|
|8|option_tag_base|タグ設定読み込み時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_tag_base/)|
|9|[registered_taxonomy](https://developer.wordpress.org/reference/hooks/registered_taxonomy/)|カテゴリー、post_tag など用|
|10|[widgets_init](https://developer.wordpress.org/reference/hooks/widgets_init/)|サイドバーの登録に使われる。`init` の際に、優先順位「1」で、したがって優先順位「1」以上の他の `init` アクションよりも前に、実行される。|
|11|[wp_register_sidebar_widget](https://developer.wordpress.org/reference/hooks/wp_register_sidebar_widget/)|各ウィジェット用|
|12|option_siteurl|サイトURL決定時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_siteurl/)|
|13|[heartbeat_settings](https://developer.wordpress.org/reference/hooks/heartbeat_settings/)|ハートビート（ブラウザとサーバーをとりもつJavaScript）の設定時 (?)|
|14|option_blog_charset|文字コード設定時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_blog_charset/)|
|15|[wp_default_scripts](https://developer.wordpress.org/reference/hooks/wp_default_scripts/)|[wp_default_scripts](https://developer.wordpress.org/reference/functions/wp_default_scripts/) の実行時 (?)|
|16|[wp_default_styles](https://developer.wordpress.org/reference/hooks/wp_default_styles/)|[wp_default_styles](https://developer.wordpress.org/reference/functions/wp_default_styles/) の実行時 (?)|
|17|[init](https://developer.wordpress.org/reference/hooks/init/)|通常プラグインの初期化に使われる。この段階で現在のユーザーに対する認証は完了している。|
|18|[wp_loaded](https://developer.wordpress.org/reference/hooks/wp_loaded/)|WordPress が完全に読み込まれた後|
|19|option_home|ホームURL決定時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_home/)|
|20|[request](https://developer.wordpress.org/reference/hooks/request/)|QUERY_STRINGのパース時 (?)|
|21|[parse_request](https://developer.wordpress.org/reference/hooks/parse_request/)|リクエスト処理を変更できるようにする|
|22|[send_headers](https://developer.wordpress.org/reference/hooks/send_headers/)|ヘッダーを変更できるようにする|
|23|[parse_query](https://developer.wordpress.org/reference/hooks/parse_query/)|クエリ変数が設定された後|
|24|[pre_get_posts](https://developer.wordpress.org/reference/hooks/pre_get_posts/)|クエリが実行される前にクエリ変数オブジェクトを露出する|
|25|[posts_selection](https://developer.wordpress.org/reference/hooks/posts_selection/)|[Codexのページ](https://codex.wordpress.org/Plugin_API/Action_Reference/posts_selection)のGoogle翻訳：このアクションフックは前のクエリに実行され、組み立てられたクエリを含む文字列が渡されます。この文字列は、NOT参照によって渡され、この文字列を操作すると、実際のクエリには影響しません。これは、プラグインをキャッシュすることで主に使用されることを意図しています。|
|26|[wp_get_object_terms](https://developer.wordpress.org/reference/hooks/wp_get_object_terms/)|[wp get object terms](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_get_object_terms) 実行時 (?)|
|27|[the_posts](https://developer.wordpress.org/reference/hooks/the_posts/)|投稿データが内部処理された時 (?)|
|28|[wp](https://developer.wordpress.org/reference/hooks/wp/)|WP オブジェクトが設定された時|
|29|[admin_bar_init](https://developer.wordpress.org/reference/hooks/admin_bar_init/)|Adminバーの初期設定時 (?)
|30|[add_admin_bar_menus](https://developer.wordpress.org/reference/hooks/add_admin_bar_menus/)|Adminバーのメニューが追加された時 (?)|
|31|[shutdown](https://developer.wordpress.org/reference/hooks/shutdown/)|PHP の実行が終わりかけの時点|


## 管理画面リクエスト中に実行されるアクション

Codex日本語版の一覧は[こちら](https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7#.E7.AE.A1.E7.90.86.E7.94.BB.E9.9D.A2.E3.83.AA.E3.82.AF.E3.82.A8.E3.82.B9.E3.83.88.E4.B8.AD.E3.81.AB.E5.AE.9F.E8.A1.8C.E3.81.95.E3.82.8C.E3.82.8B.E3.82.A2.E3.82.AF.E3.82.B7.E3.83.A7.E3.83.B3)

|実行順|フィルタ名|説明|
|---:|---|---|
|1|[after_setup_theme](https://developer.wordpress.org/reference/hooks/after_setup_theme/)|通常、テーマ設定・オプションを初期化するために使われる。これはテーマで最初に使えるアクションフックであり、有効なテーマの `functions.php` ファイルが読み込まれた直後にトリガーされる。`init` アクションフックは一部の機能には遅すぎるため、[add_theme_support](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_theme_support)  はここで呼び出されるべきである。この段階では、現在のユーザーに対する認証は行われていない。|
|2|[auth_cookie_valid](https://developer.wordpress.org/reference/hooks/auth_cookie_valid/)|Cookie認証完了時 (?)|
|3|[determine_current_user](https://developer.wordpress.org/reference/hooks/determine_current_user/)|ログインユーザーの決定時 (?)|
|4|[set_current_user](https://developer.wordpress.org/reference/hooks/set_current_user/)|デフォルトの [wp_set_current_user](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_set_current_user) 関数でユーザーが変更された後に実行する|
|5|[registered_post_type](https://developer.wordpress.org/reference/hooks/registered_post_type/)|投稿タイプ設定時 (?)|
|6|option_category_base|カテゴリ設定読み込み時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_category_base/)|
|7|option_tag_base|タグ設定読み込み時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_tag_base/)|
|8|[registered_taxonomy](https://developer.wordpress.org/reference/hooks/registered_taxonomy/)|カテゴリー、post_tag など用|
|9|[widgets_init](https://developer.wordpress.org/reference/hooks/widgets_init/)|サイドバーの登録に使われる。'init' の際に、優先順位「1」で、したがって優先順位「1」以上の他の 'init' アクションよりも前に、実行される。|
|10|[wp_register_sidebar_widget](https://developer.wordpress.org/reference/hooks/wp_register_sidebar_widget/)|各ウィジェット用|
|11|option_siteurl|サイトURL決定時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_siteurl/)|
|12|[heartbeat_settings](https://developer.wordpress.org/reference/hooks/heartbeat_settings/)|ハートビート（ブラウザとサーバーをとりもつJavaScript）の設定時 (?)|
|13|option_blog_charset|文字コード設定時 (?)  ⇒[HOOKRの概要](http://hookr.io/filters/option_blog_charset/)|
|14|[wp_default_scripts](https://developer.wordpress.org/reference/hooks/wp_default_scripts/)|[wp_default_scripts](https://developer.wordpress.org/reference/functions/wp_default_scripts/) の実行時 (?)|
|15|[wp_default_styles](https://developer.wordpress.org/reference/hooks/wp_default_styles/)|[wp_default_styles](https://developer.wordpress.org/reference/functions/wp_default_styles/) の実行時 (?)|
|16|[init](https://developer.wordpress.org/reference/hooks/init/)|通常プラグインの初期化に使われる。この段階で現在のユーザーに対する認証は完了している。|
|17|[wp_loaded](https://developer.wordpress.org/reference/hooks/wp_loaded/)|WordPress が完全に読み込まれた後|
|18|[\_admin_menu](https://developer.wordpress.org/reference/hooks/_admin_menu/)|管理画面のメニュー読み込み前 (?)|
|19|[sanitize_title](https://developer.wordpress.org/reference/hooks/sanitize_title/)|投稿タイトルの無害化時 (?)|
|20|[admin_menu](https://developer.wordpress.org/reference/hooks/admin_menu/)|管理画面のメニュー読み込み時 (?)|
|21|[shutdown](https://developer.wordpress.org/reference/hooks/shutdown/)|PHP の実行が終わりかけの時点|