WordPressの管理画面(ダッシュボード)は、サイト運営の中心となる場所です。
この管理画面の機能を追加したり、表示をカスタマイズしたり、特定の操作時に独自の処理を割り込ませたりするために不可欠なのが「管理画面アクションフック」です。
これらのフックを理解し活用することで、より効率的で使いやすい管理環境を構築したり、高度なプラグインやテーマ機能を実現したりできます。
この記事では、WordPressの管理画面で利用できる主要なアクションフックを、その実行タイミングや主な用途と共にチートシート形式でまとめました。プラグイン開発者、テーマ開発者、そしてサイトを深くカスタマイズしたいと考えるすべての方にとって、必携の情報となるでしょう。
「admin_initとadmin_menuの違いが分からない」「投稿保存時はsave_postを使えばよいのか迷う」といった場面でも、必要なフックをすぐ見つけられるように、できるだけ実務目線で整理しています。
アクションフックの基本的な使い方
アクションフックを利用するには、実行したい独自のPHP関数(コールバック関数)を定義し、それをadd_action()関数を使って特定のアクションフックに登録(フックにかける)します。これにより、WordPressの処理がそのフックポイントに到達した際に、登録した関数が自動的に呼び出されます。
|
1 2 3 4 5 6 7 8 9 10 11 |
<?php // コールバック関数の定義 function my_admin_custom_function( $current_screen ) { // 管理画面で実行したい処理 // 例: echo '現在のスクリーンID: ' . esc_html( $current_screen->id ); } // アクションフックに関数を登録 // add_action( 'フック名', 'コールバック関数名', 優先度, 受け取る引数の数 ); add_action( 'current_screen', 'my_admin_custom_function', 10, 1 ); ?> |
上記の例では、current_screenフックにmy_admin_custom_functionを登録しています。優先度は数値が小さいほど早く実行され、デフォルトは10です。受け取る引数の数は、各フックで渡される引数に合わせて指定します。current_screenでは、通常は現在のスクリーン情報を表すWP_Screenオブジェクトを1つ受け取ります。
管理画面主要アクションフック一覧
管理画面のアクションフックは数が多いため、最初は「どれを使えばよいのか」で迷いやすいかもしれません。まずは次の対応関係を押さえておくと、フックを選びやすくなります。
- 設定の登録や管理画面の初期化処理を行いたい →
admin_init - 管理画面メニューを追加したい →
admin_menu - 管理画面だけにCSSやJavaScriptを読み込みたい →
admin_enqueue_scripts - 投稿編集画面にメタボックスを追加したい →
add_meta_boxes - 投稿保存時に独自処理を実行したい →
save_post/save_post_{post_type} - 管理画面に通知メッセージを表示したい →
admin_notices
このあと紹介する一覧表では、それぞれのフックの実行タイミングや用途を、チートシート形式で整理しています。
WordPressの管理画面で使用できる主要なアクションフックを機能カテゴリ別に分類しました。各フックの説明の冒頭には、その利用頻度や重要度を星の5段階評価で示しています。星の数の目安は以下の通りです。
★★★★★:ほぼ全ての開発で頻繁に利用される、基本かつ非常に重要なフック
★★★★☆:高頻度で利用され、多くの一般的なカスタマイズで役立つ重要なフック
★★★☆☆:中程度の頻度で利用され、特定の機能を実現する際に便利なフック
★★☆☆☆:利用頻度はやや低めですが、特定の要件や細かな制御を行いたい場合に役立つフック
★☆☆☆☆:利用頻度は低く、非常に限定的な状況や高度なカスタマイズでのみ使用されるフック
| カテゴリ | フック名 | 主な役割・用途 (重要度/利用頻度) | 渡される主な引数 | 実行タイミングの補足 / 具体的なユースケース |
|---|---|---|---|---|
| 管理画面初期化・ロード | admin_init |
★★★★★ 管理画面のほぼ全てのページで、ヘッダーが出力される前に実行されます。設定の登録、リダイレクト処理、権限チェックなど、多くの初期化処理に適しています。 |
なし | Settings API (register_setting, add_settings_section, add_settings_field) の実行、特定の管理画面へのアクセス時処理、POST/GETリクエストの処理。 |
load-{page_hook} / load-{pagenow}(例: load-edit.php, load-post.php) |
★★★★☆ 特定の管理画面ページがロードされる直前に実行されます。カスタムメニューページでは、 add_menu_page()などが返すページフックを使って、より限定的に処理を書くこともできます。 |
なし | 特定の管理ページでのみ必要な処理(ヘルプタブの追加、画面固有の初期化処理、条件付きのスクリプト読み込み準備など)の起点として便利です。get_current_screen()と併用することもあります。 |
|
current_screen |
★★★☆☆ 現在の管理画面のスクリーン情報 ( WP_Screenオブジェクト) が設定された直後に実行されます。 |
WP_Screen |
スクリーンID ($current_screen->id) などに基づいて、条件付きで処理を行いたい場合に便利です。 |
|
| メニュー関連 | admin_menu |
★★★★★ 管理画面のメニュー構造が構築される際に実行されます。カスタムメニューページやサブメニューページを追加するのに使います。 |
なし | add_menu_page(), add_submenu_page(), remove_menu_page()などの関数を使用。 |
admin_bar_menu |
★★★☆☆ 管理バー(ツールバー)のメニュー項目が構築される際に実行されます。独自の項目を追加したり、既存の項目を変更・削除したりできます。 |
WP_Admin_Bar |
$wp_admin_bar->add_node(), $wp_admin_bar->remove_node()などを使用。 |
|
| スクリプト・スタイル・ヘッダー・フッター | admin_enqueue_scripts |
★★★★★ 管理画面でJavaScriptファイルやCSSファイルを読み込むために使います。特定のページでのみ読み込ませる条件分岐が重要です。 |
string $hook_suffix (現在の管理ページのフックサフィックス) |
wp_enqueue_script(), wp_enqueue_style()を使用。$hook_suffixでページを特定。 |
admin_head |
★★★☆☆ 管理画面の各ページの タグ内に、直接HTMLやインラインCSS/JavaScriptを出力する場合に使います。 |
なし | 例: |