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';
}
メニュー「TEST」が追加されました。でもこれだとネットワーク管理者のダッシュボードにでないのです。 マルチサイトにすることはあんまりないんだけど、ネットワーク管理者しか使えな い機能を作ったのだから、どうせならネットワーク管理者のダッシュボードに出したいなぁと思って、四苦八苦しました。 無理なのかなぁと思ってあきらめかけてたんですが、よく見たら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';
}
無事出力されました。 以上、WordPressでネットワーク管理者専用のメニューを追加する方法でした。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。