最近、Admin Page Frameworkという、WordPressプラグインの管理画面を爆速で作れるライブラリを使いました。
日本語での情報が少なかったので、今回使ったコードを「逆引きコードレシピ」としてメモしておきます。
セットアップの仕方
セットアップの仕方は記事として書こうと思います。
今すぐ知りたい方は、セットアップの仕方(英語) をご参考ください。
管理画面にトップレベルメニュー + サブメニューを追加
class YOUR_Prefix extends AdminPageFramework {
public function setUp() {
// トップレベルメニュー追加
$this->setRootMenuPage( 'My Admin Pages' );
// サブメニューを追加
$this->addSubMenuItems(
array(
'title' => 'My Page A', // page title
'page_slug' => 'my_first_page_a', // page slug
),
array(
'title' => 'My Page B', // page title
'page_slug' => 'my_first_page_b', // page slug
)
);
}
// コンテンツを表示する
// do_ + サブメニュースラッグの関数名で、slug ページのコンテンツ出力
public function content_my_first_page_a() {
?>
<h3>Say Something</h3>
<p>This is my first admin page!</p>
<?php
}
}
new Example_Admin;
参考
Admin Page | Admin Page Framework Documentation
セクションとフィールド実装
セクションとフィールドは、setUP
メソッド内に書きます。
// クラスの setUP メソッド内
public function setUp() {
// トップレベルメニュー + サブメニュー追加コード . . .
// セクション追加
$this->addSettingSections(
array(
'section_id' => 'my_section_id',
'title' => 'My Post Meta Section',
)
);
// フィールド追加
$this->addSettingFields(
'my_section_id', // section id
// テキストエリア
array(
'field_id' => 'my_field_id',
'title' => __( 'Text Area', 'admin-page-framework-loader' ),
'type' => 'textarea',
'rich' => true,
),
// 送信ボタン
array(
'field_id' => '_submit',
'type' => 'submit',
'save' => false,
)
);
}
textarea フィールド以外にも、チェックボックスなど豊富な種類のUIが準備されています。フィールドの種類については、Field Types | Admin Page Framework Documentation を参考ください。
参考
Form Component | Admin Page Framework Documentation
保存した値を取得
// AdminPageFramework を extend したクラス名を指定
$_option = get_option( 'YOUR_Prefix', array() ); // これだけでもデータ取得可能。
// 指定のフィールドの値を取得したい時は、YOUR_Prefix_AdminPageFramework_Utilityを使うと便利。
$_utils = new YOUR_Prefix_AdminPageFramework_Utility;
$_sMyFieldValue = $_utils->getElement(
$_option, // subject array
array( 'my_section_id', 'my_field_id' ), // section id と filed id
'my default value' //デフォルト値
);