管理画面

プラグインの設定項目が多くなるとか、管理画面で操作する機能が多岐にわたるようになると、既存メニューのぶら下がりでサブメニューを設置していくのが厳しくなります。
一方、ユーザーの視点から見たときにも、ひとつのプラグインの設定があちこちに散財していたり、ひとつのページに長々と書かれていたりすると導入障壁が高くなるのです。

そんなときに、カスタムのトップメニュー&サブメニューを作ればいいなぁと思っていたのですが、なんとか出来たので、自分なりの解釈で読み解いた結果をここでシェアします。

まず、参考にすべきページは「管理メニューの追加 – WordPress Codex 日本語版」です。よく時間をかけて読めば、なんとか解決するようなものですが、登場人物(関数とかフックとか)が単細胞人間にとっては少なくないのでゆっくり噛み砕いて進めました。

(ここから先は開発中のVC Search 2.0のコードで記述します)

[php]add_action(‘admin_menu’, ‘vc_search_menu’);[/php]

admin_menuフックにvc_search_menu関数を登録します。
次にその関数の中身です。

[php]// 管理画面メニュー作成関数
function vc_search_menu() {
add_menu_page(‘VC Search’, ‘VC Search’, 8,__FILE__, ‘vc_search_options’, ‘http://localhost/wplocaltest/wp-content/plugins/vc-search/icon16.png’);
add_submenu_page(__FILE__, ‘主要一括設定’, ‘主要一括設定’, 8, __FILE__, ‘vc_search_options’);
add_submenu_page(__FILE__, ‘必須設定’, ‘必須設定’, 8, "admin_must", ‘vc_search_must’);
add_submenu_page(__FILE__, ‘リンクシェア’, ‘リンクシェア’, 8, "admin_linkshare", ‘vc_search_linkshare’);
add_submenu_page(__FILE__, ‘バリューコマース‘, ‘バリューコマース‘, 8, "admin_valuecommerce", ‘vc_search_valuecommerce’);
add_submenu_page(__FILE__, ‘楽天ウェブサービス‘, ‘楽天ウェブサービス‘, 8, "admin_rakuten", ‘vc_search_rws’);
add_submenu_page(__FILE__, ‘Amazon.co.jp‘, ‘Amazon.co.jp‘, 8, "admin_amazon", ‘vc_search_amazon‘);
add_submenu_page(__FILE__, ‘もしも’, ‘もしも’, 8, "admin_moshimo", ‘vc_search_moshimo’);
}[/php]

ちょっと長いですが、サブメニューの設定が記述された内容の羅列です。ここではトップメニューと主要一括設定は同じプラグインファイルの同じ関数を 読み込もうとしています(旧バージョンの設定画面と同じ)。その次にサブメニューを設定する関数が続きます。上から順番に設定されます。この順序がメ ニューの順序になるようです。
それでは、サブメニュー展開している中のひとつを取り上げてみましょう。

[php]add_submenu_page(__FILE__, ‘リンクシェア’, ‘リンクシェア’, 8, "admin_linkshare", ‘vc_search_linkshare’);[/php]

括弧内の中6項目あります。重要なのはすべてですが、他のメニューと違いのある2個目のページタイトル、3個目のメニュータイル、5個目の管理画面 ページの表示内容が記された関数があるファイル名(.php拡張子を外したもの)、そして6個目にその管理画面ページを呼び出す関数名、といった感じで す。

とりあえずの動きは確認できているものの、これでいけそうな気がしますが、間違っていたらご指摘ください。
なお、近日中にメニュー部分だけ更新されて新バージョンをリリース予定です(リリース用のソフトが壊れていて、今リリース出来なくて困っていたりします・・・)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です