web-dev-qa-db-fra.com

ajouter plusieurs sous-menus en utilisant add_submenu_page

J'ai besoin d'ajouter plusieurs sous-utilisateurs dans un seul menu administrateur parent. Je peux ajouter un sous-menu en utilisant la syntaxe suivante.

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' );

Comme j'ai plus de 10 sous-menus à enregistrer comme ci-dessus, je dois dupliquer le code ci-dessus autant que nécessaire.

Je me demande donc si je peux utiliser une boucle foreach ou une autre méthode de tableau pour créer un bloc de code et enregistrer toutes les pages de sous-menu via une fonction/un crochet d’action.

Est-ce que quelque chose comme ci-dessous peut y arriver?

$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

une boucle est presque toujours une bonne solution pour éviter de copier-coller du code.

il vous suffit d'utiliser un tableau de données comme celui-ci:

$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