2014年10月24日金曜日

WordPressの管理画面にメニュー項目を追加する方法

まずは関係するアクションフック

管理画面にメニュー項目を追加するには下記のようにadd_actionメソッドを使用し、'admin_menu'アクションにメニュー追加のために作成したメソッドをフックする。

メニュー追加のための関数add_own_menuを作成する

ここで呼び出すのがadd_menu_pageメソッド。このメソッドを呼ぶことによってトップレベルに自作メニュー項目が追加される。

add_menu_pageメソッド

add_menu_pageメソッドの引数

  1. string $page_title - メニューページタイトル メニュー項目を開いたページで、ここで指定のタイトルが表示される。HTMLのhead内でtitleタグで指定するあれ。
  2. string $menu_title - メニュー名 管理画面にここで指定した名前のメニュー項目が表示される。
  3. mixed $capability - メニューを使用できる権限を指定できる。管理者しか使用しないのであれば10を指定しておけばよいと思われる。
    指定する権限についてはLevelとCapabilityを参照
  4. string $menu_slug - メニューのスラッグを指定する。ここで指定したスラッグが、URLの?page=以降のスラッグとして使用される。
    [WordPress] 管理画面にメニュー項目を追加する | unlinked log>や他のサイトでも、この引数を'コンテンツ表示 PHP ファイル'と説明し__FILE__を指定すると説明しているものが多く見受けられるが特にコンテンツを表示するファイルを指定しなければいけないわけではないようである。そのように説明される背景はCodexによるとVersion 3.0以前においては、この引数はfile (or handle) parameterと呼ばれ、また次のfunction parameterが省略された場合にこの引数がメニューを表示するためのPHP fileとして参照されていたことに由来するようである。
  5. mixed $function - メニュー内のページを表示する関数。
  6. string $icon_url - メニュー横に表示されるアイコンファイルのURL
    WordPress Codex 日本語版 管理メニューの追加によると 「これはWordPress 2.7においてのみ有効です。」とあるので使わない方がよい?

add_object_pageメソッド、add_utility_pageメソッドは、add_menu_pageメソッドの別バージョン。
add_menu_pageメソッドでは作成したメニューがメニューの一番下に追加されるのに対して、add_object_pageメソッドではコメントの下、 add_utility_pageメソッドでは設定の下に追加される。

メニューページを表示する関数

作成したメニュー項目をクリックすると、add_menu_pageメソッドの第5引数で指定した関数が呼ばれ、表示するページが作成される
$_REQUEST['page']にはadd_menu_pageメソッド第4引数で指定したスラッグが渡っているのが分かる。

add_submenu_pageメソッド

トップレベルにメニュー項目を追加する方法としてadd_menu_pageメソッドを説明したが、一方、add_submenu_pageメソッドは、トップレベルのメニューを親として、 その子メニューとなるサブメニューを作成する関数である。


add_submenu_pageメソッドの引数
  1. string $parent_slug - ここで指定したスラッグを持つトップレベルメニューのサブメニューとしてサブメニューが作成される
  2. string $page_title - サブメニューページタイトル
  3. string $menu_title - サブメニュー名
  4. mixed $capability - メニューを使用できる権限
  5. string $menu_slug - サブメニューのスラッグを指定する
  6. mixed $function - サブメニュー内のページを表示する関数。

add_dashboard_pageメソッド、add_posts_pageメソッドは表示位置が最初から決まっているadd_submenu_pageメソッドの別バージョン。
add_menu_pageメソッドで第1引数を指定すればこれらを使う必要はない。

サブメニューページを表示する関数

作成したサブメニュー項目をクリックすると、add_sub_menu_pageメソッドの第6引数で指定した関数が呼ばれ、表示するページが作成される

$_REQUEST['page']にはadd_sub_menu_pageメソッド第5引数で指定したスラッグが渡っているのが分かる。

ソース全体 -Pluginにしてみた-

参考

add_menu_page:WordPress私的マニュアル - elearn.jp

add_submenu_page:WordPress私的マニュアル - elearn.jp

[WordPress] 管理画面にメニュー項目を追加する | unlinked log

管理メニューの追加 - WordPress Codex 日本語版

PHPによるWordPressカスタマイズブック―3.x対応 p.280~あたり

0 件のコメント:

コメントを投稿