管理画面ツールの中にメニューを追加したい

使用例

<?php
//使用例
$hogehoge = new HOGEHOGE();
class HOGEHOGE {
    public function __construct() { 
        add_action( 'admin_menu', array( &$this, 'admin_menu_page' ) ); 
    }
 
    public function admin_menu_page() 
    { 
        //管理画面ツール内にメニュー追加
        add_management_page( 
            'My Original Pluginページ', 
            'My Original Plugin', 
            'manage_options', 
            'wpmop', 
            array( &$this, 'wpmop_toolpage' )
        ); 
    } 

    //管理画面メニューをクリックしたときに内容を出力する関数
    public function wpmop_toolpage()
    {
?>
<div class="PluginPage">
    <h2 class="PluginPage__head">プラグインページタイトル</h2>
    <div class="PluginPage__body">プラグインページのコンテンツ</div>
<?php
    }    
}

解説

//利用するアクションは、admin_menu
add_action( 'admin_menu', array( &$this, 'hogehoge_method' ) );

//hogehoge_methodメソッド内で使用するメニュー追加関数
add_management_page(
    '追加したページの<title>タグ',
    '追加したページのツール内部にリスト表示されるタイトル',
    '利用可能な権限', 
    '追加したページのスラッグ',
    'コンテンツ表示に使われる関数名'
); 

応用編

ob_start()関数の利用

引数で使われている関数内で出力されたものがそのままHTMLとして利用される関数がいくつかあります。

そのような関数の中で、普通にHTMLを書いているだけならば問題ないのですが、PHPで書いているときに「まだ出力したくない」のに、【勝手に出力しようとする関数】を使わなくてはいけない状況が出てくることがあります(例:the_content()のような関数)。

その場合、以下のようにob_start()関数を利用するとPHPのエラーが出ずに済みますので是非ご利用ください。

public function wpmop_subpage02() 
{
    ob_start();
    /*
    ここに勝手に出力されてしまう関数を含めたコードやHTMLを記載
    */
    $data = ob_get_contents(); // 記録結果を変数に代入
    ob_end_clean();
    echo $data;
}

Posted by webmaster