【WordPressプラグインの管理画面を簡単に作る! 】Admin Page Framework 逆引きコードレシピ

最近、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' //デフォルト値
);