それではプラグインを作成していきます。
プラグインに最低限必要なのはプラグインファイルです。このあたりの作成方法は以下で解説しています。
WordPress】プラグインの作成①
プラグインファイルには最低限必要な情報のみを記述して、あとはクラスファイルに遷移する形にしています。
クラスファイルの作成
まずは管理側での問題作成画面を作っていきます。
管理画面へのプラグインメニューの追加に関しては以下に記述しています。
上記の記事で紹介した通り管理画面へのメニュー追加は「add_menu_page」関数を使用し、サブメニューは「add_submenu_page」関数を使用します。
ただ、クラスファイルに記述する場合とfunctions.phpで記述する場合と異なる記述方法になるので注意が必要です。
クラスファイルに記述する場合は、add_menu_page・add_submenu_pageどちらも関数を記述する際に配列で渡してあげなければ動作しません。
↓
add_menu_page(‘問題管理ページ’, ‘試験作成’, ‘administrator’, 'test',array($this,’test_menu’));
サブメニューを非表示にする
add_menu_pageを使って管理画面にメニュー追加すると、サブメニューにも自動的に追加されます。
このサブメニュー表示を非表示にしたいと思いますので「removeMenu」関数を使用します。
1 2 3 4 5 |
function removeMenu() { global $submenu; unset($submenu[スラッグ名][0]); } |
■非表示前
■非表示後
無事サブメニューのみ非表示にすることが出来ました。
非表示にしたいサブメニューのスラッグ名と番号が分からない場合は「var_dump」関数で$submenuを表示すると、配列の中身が確認できるので調べられると思います。
ちなみにメインメニューを非表示にする場合は$menuを使用します。removeMenu関数は複数のメニュー、サブメニューを非表示にすることも可能です。
ただ、非表示にremoveMenu関数を使用して非表示にした画面は、遷移しても表示できない状態になるみたいなので、
使用する予定がある画面に関してはCSSで非表示にしてあげる必要があるようです。
PHPファイルの読み込み
管理画面にメニュー作成ができたので実際にサブメニューを選択された時に表示するページを作成したいと思います。
現在のクラスファイルは以下のような内容になっています。
1 2 3 4 5 6 7 8 9 10 11 |
function__construct(){ if(is_admin()){ add_action('admin_menu', array($this,"add_admin_menu")); add_action('admin_menu',array($this,'removeMenu')); } } functionadd_admin_menu() { add_menu_page('fak_program', '試験作成', 'administrator', "fak_program",array($this,'')); add_submenu_page("fak_program",'問題管理','問題管理ページ','administrator',"manage",array($this,'testMenuSub')); add_submenu_page("fak_program",'問題編集','問題編集ページ','administrator',"edit",array($this,'testCreateSub')); } |
「問題管理ページ」は「testMenuSub」、「問題編集ページ」は「testCreateSub」を記述しています。
その下に以下の記述を行います。
1 2 3 4 5 6 7 8 |
functiontestMenuSub() { require_once 'elements/views/testMenuPage.php'; } functiontestCreateSub() { require_once 'elements/views/testCreatePage.php'; } |
その後elements/views配下にtestMenuPage.phpとtestCreatePage.phpを作成します。
とりあえず今回は画面作成だけ行って、ロジック部分はまた別の機会に取り上げたいと思います。
PHPファイルにはHTML,CSS,JavaScriptのみを記述しています。
あとで作りこみの際この辺りもファイルを分けたいと思います。
とりあえず下記のように作成しました。
■問題管理ページ
■問題作成ページ
悲しくなるほど不格好だけど、まず目指すところとしてはシンプルな出題プラグインなのでデザイン面は後々調整していきたいと思います。
管理画面の骨組みはできたので、問題登録や出題機能を実装していきたいと思います。