web-dev-qa-db-ja.com

add_submenu_pageを使って複数のサブメニューを追加する

私は単一の親管理者メニューの下に複数のサブメニューを追加する必要があります。次の構文を使ってサブメニューを追加できます。

function register_my_sub_admin() {
    add_submenu_page( '/pluginname/includes/admin-menu.php',
        'title',
        'menu_title',
        'manage_options',
        '/pluginname/includes/submenu.php',
        '',
        plugins_url( 'pluginname/images/icon.png' )
    );
}

add_action( 'admin_menu', 'register_my_sub_admin' );

私は上記のように登録するために10以上のサブメニューを持っているので、私は必要なだけ上記のコードを複製しなければなりません。

それで、1つのコードブロックを実行し、1つのアクションフック/関数を介してすべてのサブメニューページを登録するために何らかのforeachループまたは他の配列メソッドを使用できるかどうかを考えて、。

以下のようなことがこれを引き起こす可能性がありますか?

$sub_menu       = array();
    $sub_menu['page_title'] = array('page1','page2');
    $sub_menu['menu_title'] = array('title1','title2');
    $sub_menu['capability'] ='manage_options';
    $sub_menu['slug']   = array('wp-admin.php','wp-login.php');
    $sub_menu['function'] ='';

    foreach ($sub_menu as $key => $value ){
        add_submenu_page( '/pluginname/includes/admin-menu.php',
            $key,$key,$key,$key,$key,
            plugins_url( 'pluginname/images/icon.png' )
        );
    }
1
Shirantha

ループは、ほとんどの場合、コードのコピーアンドペーストを避けるための良い解決策です。

あなたはそのようなデータの配列を使う必要があるだけです:

$submenus = [
    [
        "page_title" => "page1",
        "menu_title" => "title1",
        "slug" => "wp-admin.php",
    ],
    [
        "page_title" => "page2",
        "menu_title" => "title2",
        "slug" => "wp-login.php",
    ],
];


foreach ($submenus as $value) {

    add_submenu_page(
        '/pluginname/includes/admin-menu.php',
        $value["page_title"],
        $value["menu_title"],
        'manage_options',
        $value["slug"],
        '',
        plugins_url( 'pluginname/images/icon.png' )
    );


}
0
mmm