Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Menu Admin WordPress : Réorganisation des sous-menus

34

L’une des choses à propos de l’utilisation de l’API de menu WordPress (c’est-à-dire add_menu_page, add_submenu_page, etc.) est qu’elle ne facilite pas la réorganisation des éléments de sous-menu.

Bien sûr, pour certaines choses comme les taxonomies ou des choses comme ça, vous pouvez simplement changer l’ordre dans lequel elles sont enregistrées. Mais disons que vous avez un menu d’administration WordPress, puis quelques pages de sous-menu sous ce menu particulier.

Par défaut, WordPress crée le menu de niveau supérieur, puis il crée immédiatement un élément de sous-menu sous le menu de niveau supérieur qui renvoie à la même page. Dans de nombreux cas, cela peut être idéal.

Dans certains cas, cependant, vous voudrez peut-être changer cela.

Menu d’administration de WordPress

Pour donner un exemple de quand vous voudrez peut-être changer quelque chose, cela pourrait être quelque chose comme ceci :

  • Vous disposez d’un menu de niveau supérieur destiné à proposer des options après la connexion à une API tierce,
  • L’API tierce nécessite une clé API (ou une autre authentification), vous devez donc d’abord fournir des paramètres pour cela,
  • Pourquoi ne pas définir le premier élément de menu sur les paramètres et le deuxième élément de menu sur les outils API ?

Bien sûr, lorsque les paramètres n’ont pas été définis, il est utile d’afficher également un message dans le menu principal des outils de l’API indiquant que l’utilisateur doit cliquer sur la page Paramètres pour entrer ses paramètres.

Mais cela dépasse le cadre de cet article. Pour l’instant, voici un moyen de gérer la réorganisation du menu côté serveur. D’abord le code, puis l’explication.

<?php
add_action('custom_menu_order', __NAMESPACE__.'acmeReorderSubmenuItems);
/**
 * Reorders the menu by placing the second item before the first item.
 */
function acmeReorderSubmenuItems()
{
    global $submenu;
    $newSubmenu = [];
    foreach ($submenu as $menuName => $menuItems) {
        if ('acme-api-tools' === $menuName) {
            $newSubmenu[0] = $menuItems[1];
            $newSubmenu[1] = $menuItems[0];
            $submenu['acme-api-tools'] = $newSubmenu;
            break;
        }
    }
}

D’une manière générale, j’utilise ceci dans le contexte d’un objet à espace de noms, mais pour cet article, je le relègue à une fonction qui existe dans un espace de noms.

Quelques points à noter :

  • J’utilise le crochet custom_menu_order qui est un endroit idéal pour travailler sur les éléments de menu dans WordPress,
  • Je recherche spécifiquement le sous-menu acme-api-tools dans la clé $menuName de la variable de tableau $ submenu ,
  • Je crée un tableau, $newSubmenu, puis échange les éléments et attribue le nouveau sous-menu au sous-menu existant identifié par la clé.

Il y a quelques commentaires – peut-être même des problèmes (ou du moins des considérations sérieuses) – avec cette approche.

À savoir, le code s’attend à connaître précisément la clé avec laquelle nous cherchons à travailler. Dans certains cas, c’est bien, mais si vous cherchez à modifier un menu dont vous ne connaissez pas la clé (comme acme-api-tools ), vous devrez alors le modifier.

Ensuite, cela suppose également qu’il n’y a que deux éléments de menu à échanger. C’est assez simple dans le cas ci-dessus, mais s’il y en avait plus, vous auriez probablement besoin d’une fonction pour gérer le déplacement des éléments et renvoyer le nouveau tableau.

Assez pour commencer

Cela dit, la fonctionnalité ci-dessus devrait donner suffisamment d’informations pour au moins comment commencer à faire cela, sinon plus, et ensuite comment manipuler le tableau de sous-menu qui est visible

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More