【BiTT】低価格×高品質
【BiTT】低価格×高品質

WordPressで管理者専用のメニューをダッシュボードに追加する方法

づや

 WordPressでプラグインを作ってて、オリジナルのメニューを管理画面に追加したい時、普通なら↓のようにします。

// admin_menuにフックする
add_action('admin_menu', 'menu_test');
// フックの中身
function menu_test(){
	add_menu_page("TEST", "TEST", "edit_plugins",  __FILE__, "menu_test_body");
}
// メニューがクリックされた時に動く
function menu_test_body(){
	echo 'TEST';
}

admin_1 メニュー「TEST」が追加されました。でもこれだとネットワーク管理者のダッシュボードにでないのです。 admin_2 マルチサイトにすることはあんまりないんだけど、ネットワーク管理者しか使えな い機能を作ったのだから、どうせならネットワーク管理者のダッシュボードに出したいなぁと思って、四苦八苦しました。 無理なのかなぁと思ってあきらめかけてたんですが、よく見たらQuick Cacheさんが出してらっしゃいました。 さっそくコードを見てみると、/quick-cache/includes/classes/menu-pages.inc.phpに add_network_admin_options()なんて関数が。でもやってることはあんまり変わりません。

add_menu_page ("Quick Cache", "Quick Cache", "edit_plugins", "ws-plugin--qcache-options", "c_ws_plugin__qcache_menu_pages::options_page");

じゃあフックしてるところかなと思って探すとhooks.inc.phpには下記のように。

add_action ("network_admin_menu", "c_ws_plugin__qcache_menu_pages::add_network_admin_options");

これかと思って試すと・・・

add_action('network_admin_menu', 'menu_test');
function menu_test(){
	add_menu_page("TEST", "TEST", "edit_plugins",  __FILE__, "menu_test_body");
}
function menu_test_body(){
	echo 'TEST';
}

admin_3 無事出力されました。 以上、WordPressでネットワーク管理者専用のメニューを追加する方法でした。

3 0 0 0