WordPressに機能を追加する場合、管理画面にメニュー項目を追加したい場合があると思います。今回はプラグインを使って管理画面のメニュー追加方法をまとめたいと思います。
手順は3つ。
- メニューを表示するための関数を作成
- アクションフックを使ってメニューを表示
- 選択されたときに表示されるページを作成
下記に例を示します。
/* 管理画面に顧客リストを表示する */ add_action( 'admin_menu', 'my_custom_menu_page'); // 手順2のコード アクションフックを使って下の関数を実行しています function my_custom_menu_page(){ add_menu_page('顧客一覧', '顧客', 'manage_options', 'customer_list_menu', 'customer_list_page', '', 4 ); } //手順1のメニューを表示するための関数 add_action( 'admin_menu', 'add_sub_menu' ); //サブメニューのアクションフック function add_sub_menu() { add_submenu_page('customer_list_menu', '顧客追加', '顧客追加', 'manage_options', 'customer_add_menu', 'customer_add_page'); } //サブメニューを表示させる関数 function customer_list_page(){ echo '<div class="wrap">'; echo '<h2>顧客一覧ページ</h2>'; echo '</div>'; } function Customer_add_page(){ echo '<div class="wrap">'; echo '<h2>顧客登録ページ</h2>'; echo '</div>'; }
トップレベルメニューをクリックされたときには「customer_list_page.php」を実行し、サブメニューを押されたときは「customer_add_page.php」を実行します。
目次
1.メニューを表示するための関数を作成
管理画面のメニューを表示する関数が用意されているので、それを使用してメニューを表示します。なお、これを追加しただけでは表示することはありません。2に説明するアクションフックで作成した関数を登録する必要があります。
トップレベルメニュー
関数:add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function);
パラメータ
- $page_title
(文字列) (必須) メニューが選択したページのタイトルタグに表示されるテキスト
初期値: なし - $menu_title
(文字列) (必須) メニューで表示されるテキスト 例では「顧客」
初期値: なし - $capability
(文字列) (必須) The capability required for this menu to be displayed to the user.
初期値: なし - $menu_slug
(文字列) (必須) スラッグ名 to refer to this menu by (should be unique for this menu).
初期値: なし - $function
(コールバック) (オプション) The function to be called to output the content for this page.
初期値: ‘ ‘
この例では「add_menu_page(‘顧客一覧’, ‘顧客’, ‘manage_options’, ‘customer_list_menu’, ‘customer_list_page’, ”, 4 ); }」となります。
サブレベルメニュー
関数:add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); ?>
パラメータ
- parent_slug
親メニューのスラッグ名。またはサブメニューを追加する先のトップレベルメニューを実装する標準 WordPress 管理ファイルのファイル名。またはサブメニューを追加する先のカスタムトップレベルメニューを実装するプラグインファイル
例:
ダッシュボード用: add_submenu_page(‘index.php’,…)
投稿用: add_submenu_page(‘post-new.php’,…)
メディア用: add_submenu_page(‘upload.php’,…)
固定ページ用: add_submenu_page(‘edit.php?post_type=page’,…)
コメント用: add_submenu_page(‘edit-comments.php’,…)
カスタム投稿タイプ用: add_submenu_page(‘edit.php?post_type=your_post_type’,…)
外観用: add_submenu_page(‘themes.php’,…)
プラグイン用: add_submenu_page(‘plugins.php’,…)
ユーザ用: add_submenu_page(‘users.php’,…)
ツール用: add_submenu_page(‘tools.php’,…)
設定用: add_submenu_page(‘options-general.php’,…) - page_title
サブメニューが有効化された際にHTMLページタイトルに表示されるテキスト - menu_title
サブメニューの管理画面上表示されるテキスト。 - capability
ユーザーがこのメニュー表示する際に必要な権限。 - menu_slug
既存の WordPress メニューの場合、メニューページコンテンツ表示を処理する PHP ファイル。カスタムトップレベルメニューのサブメニューの場合、このサブメニューページの一意の識別子
プラグインが専用のトップレベルメニューを作成する場合、先頭のサブメニューは通常、トップレベルメニューと同じタイトルへのリンクを持つため、リンクが重複します。重複したリンクタイトルを回避するには、最初に parent_slug パラメータと menu_slug パラメータに同じ値を指定して add_submenu_page を呼び出します。 - function
メニューページのコンテンツを表示する関数
技術的には add_menu_page 関数同様、functionパラメータはオプションですが、指定されていない場合、WordPress は基本的にインクルードされた PHP ファイルが、関数の呼び出しなしで管理画面を生成するものと仮定します。ほとんどのプラグインの作者はメインのプラグインファイル内の関数で、ページ生成コードを実装します。
function パラメータを指定する場合は menu_slug パラメータに任意の文字列を使用できます。?page=my-super-plugin/admin-options.php の代わりに ?page=my_super_plugin_page のようなページを使用できます。
function パラメータとしてクラスのメンバーを使用する方法については「トップレベルメニュー」節を参照してください。
この例では「add_submenu_page(‘customer_list_menu’, ‘顧客追加’, ‘顧客追加’, ‘manage_options’, ‘customer_add_menu’, ‘customer_add_page’); }」の部分にあたります。
パラメータの「parent_slug」には、親のメニュースラッグである「customer_list_menu」を入れています。デフォルトのメニューの配下に入れる場合はそれぞれ「add_submenu_page(‘post-new.php’,…)」とパラメータで選択します。
2.アクションフックを使ってメニューを表示
管理画面のメニューを追加するアクションフック「admin_menu」を使って関数を登録します。この例では「add_action( ‘admin_menu’, ‘my_custom_menu_page’);」にあたります。
アクションフック「admin_menu」を使って、メニュー表示時に「my_cutom_menu_page.php」を実行して、メニューを表示します。
3.選択されたときに表示されるページを作成
メインメニュー「顧客」をクリックされたときは、「「add_menu_page(‘顧客一覧’, ‘顧客’, ‘manage_options’, ‘customer_list_menu’, ‘customer_list_page’, ”, 4 ); }」」の「customer_list_page.php」が実行されるので、そこにページを表示するPHPを記載します。
この例では、「function customer_list_page(){ 略 }」の部分になります。