私は単一の親管理者メニューの下に複数のサブメニューを追加する必要があります。次の構文を使ってサブメニューを追加できます。
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' )
);
}
ループは、ほとんどの場合、コードのコピーアンドペーストを避けるための良い解決策です。
あなたはそのようなデータの配列を使う必要があるだけです:
$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' )
);
}