サポート » 使い方全般 » 管理画面にメニューを追加したいです

  • 解決済 deffdeff

    (@deffdeff)


    管理画面の左側にメニューを追加すべくadmin_menuを使っています。

    まずadd_menu_pageの5つ目の引数$templateですが、ここでは// テンプレートの指定に必要な関数名を渡しています。

    しかし// テンプレートの指定はループにできず、以下のようにdashbord_reddashbord_blueという2つの関数を書いているところが不自然だと感じるのです。

    なので// テンプレートの指定2つも$arrを使いたいと思っているのですが、方法ございますでしょうか?

    
    // メニュー名
    $arr = ['red','blue'];
    
    // メニューを追加
    add_action('admin_menu', 'additional_menu_page');
    function additional_menu_page() {
    	foreach( $arr as $a ){
    		$template = 'dashbord_' . $a;
    		add_menu_page($a, $a, 'manage_options', $a, $template, 'dashicons-search', 3 );
    	}
    }
    
    // テンプレートの指定
    function dashbord_red() {
    	get_template_part( 'dashboard/dashbord_red' );
    }
    function dashbord_blue() {
    	get_template_part( 'dashboard/dashbord_blue' );
    }
    

    イメージとしては下記のようなことをしたいのです。

    
    // テンプレートの指定
    foreach( $arr as $a ){
    	$template = 'dashbord_' . $a;
    	function $template (){
    		get_template_part( 'dashboard/' . $template );
    	}
    }
    
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    無名関数 (PHP 5.3以上) を使用するといいのではないでしょうか。

    例:

    foreach( $arr as $a ){
    	$template = function() use ( $a ) { get_template_part( 'dashboard/dashboard_' . $a ); };
    	add_menu_page( $a, $a, 'manage_options', $a, $template, 'dashicons-search', 3 );
    }
    トピック投稿者 deffdeff

    (@deffdeff)

    おはようございます、いつもお世話になっております。
    そのような方法はお目にかかったことがありません。大変勉強になりました…。
    ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「管理画面にメニューを追加したいです」には新たに返信することはできません。