CMS wordpress

【WordPress】プラグイン作成② ~管理画面にメニューを追加~

投稿日:2018年7月20日 更新日:

フックを使って管理画面にプラグインメニューを追加

前回、プラグインの入れ物を作成し、プラグインメニューに追加しました。

現在処理はなにも記述されていませんので、実施に機能を搭載していきたいと思います。

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

まずは問題を作成するための管理画面にメニューを追加することから行います。

管理画面にメニューを追加するには「admin_menu」を使用します。引数については以下の表のとおりです。

add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
引数名 説明
$page_title メニュー選択した後に表示されるページの名前
$menu_title 管理画面上に表示される名称
$capability 表示するユーザの権限
$menu_slug 管理するスラッグ
$function 呼び出す関数名
$icon_url アイコンのURL
$postion メニュー位置

$capability、$menu_slugに関しては、以下の記事にまとめています。

実際の記述は以下のようにしました。ちなみに以下はfree-and-kind-program.php(プラグインファイル)に記述しています。

add_action(‘admin_menu’,’add_admin_menu’);
function add_admin_menu() {
add_menu_page(‘問題管理ページ’, ‘試験作成’, ‘administrator’, “test”,’test_menu’);
}
function test_menu() {
echo “HelloWorld”;
}

注意点としては、いきなり「add_menu_page」を記述してもエラーになります。

関数の中に記述してその関数をフックで呼び出す、と覚えましょう。

これで管理画面に「試験問題」メニューが作成され、メニューの内容は「test_menu」の記述したHelloWorldを出力、という内容を実現できています。

ただ、これでは拡張性、保守性の考慮がすっぱり抜け落ちています。

これから先データベースへの接続処理や管理画面にさらにページを加えるなどの機能拡張をしようとしたときに、何処になにが記述されているか分からず整理が大変です。

大変なだけならまだしも、せっかく機能追加したと思ったら、コードの可読性が低いと誤った場所に記述をしてしまい、最悪Wordpressが動かなくなる、という危険性もはらんでいます。

特にフックは競合する要素も含まれているっぽいので、ある程度開発方針を固めてから構築していくのが理想的だと考えます。

次回以降にMVCモデルでプラグインを実装していきたいと思います。

【おまけ】メニューにサブメニューを追加する方法

開発方針を作成しなければ、開発は進まないのも事実ですが、この技術はいずれにしても使用するので、ついでにサブメニューを追加する方法も記しておきます。

add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function);
メインメニューを作成するフックとほぼ同じですね。$parent_slugには管理画面のスラッグを設定しました。
コードは以下の記述としました。

add_action(‘admin_menu’,’add_admin_menu’);
function add_admin_menu() {
add_menu_page(‘問題管理ページ’, ‘試験作成’, ‘administrator’, “test”,’test_menu’);
add_submenu_page(“test”,’問題管理ページ_サブ’,’試験作成_サブ’,’administrator’,”test_sub”,’test_menu_sub’);
}
function test_menu() {
echo “HelloWorld”;
}
function test_menu_sub() {
echo “HelloHelloWorld”;
}

これで以下のようにサブメニューを追加することが出来ました。

まとめ

以上がサブメニューを追加する方法です。

後は引数次第でメニューの場所を変えたり、作成したメニューを非表示にすることなど、様々なカスタマイズが可能です。

次回から可読性、拡張性を考えながら実装していきたいと思います。

 

-CMS, wordpress

関連記事

【WordPress】プラグイン作成③ ~管理画面の画面作成~

それではプラグインを作成していきます。 プラグインに最低限必要なのはプラグインファイルです。このあたりの作成方法は以下で解説しています。 参考記事 WordPress】プラグインの作成① プラグインフ …

【WordPress】第一回STINGER8のカスタマイズ

今僕のブログで使用しているテーマを編集した記録を公開します。 正直まだ全然できてないので中途半端な記事になると思いますが、進展させるごとに追記をしていこうと思うので、暖かい目で見守っていただけたらあり …

WordPressのテーマについて

WordPressのテーマとは WordPressでは、「テーマ」と呼ばれるファイル群を使ってWebサイトを表現しています。 テーマの中にhtmlやcss、JavaScriptなどのファイル群、そして …

【WordPress】プラグインの作成① ~作成の下準備~

いざ、プラグイン作成!! とりあえず材料は揃ったってことで、プラグインを作成したいと思います。 参考材料はプラグインの調査「試験問題・クイズ出題WordPressプラグイン「Quiz And Surv …

WordPressのフック(hook)について

フックについて調べる経緯 WordPressでカスタマイズする、といえばテーマかプラグインについてだと思います。 WordPressがデフォルトで持つ機能といえば、管理画面で出来る機能です(当たり前で …