WordPress : Option de menu à un seul niveau ? Autrement?

Publié par Jean-Michel le

I’m developing a child theme of Twenty-Thirteen for a client. My theme contains a second navigation menu properly registered through my functions.php file.

This second navigation menu is fully working properly and just as expected.

However, as part of my design, I only want this second navigation menu to be a « single-level » menu; i.e., no children or sub-menu items.

I am able to remove any appearance of children menu items with CSS using a display:none targeting the appropriate .sub-menu item under this custom menu.

However, even though I have removed the visual possibility of sub-menu items breaking the layout, I’d like to stop the Admin from creating them in the first place. I don’t want the client to add sub-menu items only to find they’re not showing up. For nothing else, I’d like to produce a more robust theme, front to back.

Lire également:  Wordpress : Comment créer un panneau "sous" de personnalisateur de thème ?

I’ve searched Google, SO, SE, and the WordPress site, but I cannot find out how I can block the creation of sub-menu items from the Dashboard. The research issue is stymied because no matter which search terms I use, I keep finding posts about people having the opposite problems… how to create a submenu.

J’ai déjà ma propre page de tableau de bord pour les options de thème personnalisé. Existe-t-il un moyen de personnaliser l’écran d’édition du menu uniquement pour ce menu ? Un crochet? Une autre idée pour forcer un menu à un seul niveau ?

Lire également:  Wordpress : Comment faire apparaître la fonction dans la phrase ?

Solution n°1 trouvée

Ce n’est pas exactement ce que je voulais mais c’est très proche.

Selon le codex pour wp_nav_menu()

$depth
(entier) (optionnel) Combien de niveaux de la hiérarchie doivent être inclus où 0 signifie tous. -1 affiche les liens à n’importe quelle profondeur et les organise dans une seule liste plate.
Par défaut : 0

Alors j’ai fait ça…

wp_nav_menu(
    array(
        'container_class' => 'menu-top-menu-container',
        'theme_location' => 'secondary',
        'depth' => -1
    )
);

J’ai essayé 'depth' => 1de désigner un seul niveau pur, cependant, cela n’empêche pas la création d’éléments de sous-menu dans le tableau de bord. Le résultat final est le même que mon hack CSS. L’administrateur ne saurait pas pourquoi ses nouveaux éléments de sous-menu ne s’affichent pas.

Lire également:  Les images ne s'affichent pas après la migration wordpress

J’ai fini par utiliser 'depth' => -1, qui force tous les éléments de menu à un seul niveau, y compris tous les éléments de sous-menu qui pourraient être créés. Au moins, l’administrateur devrait remarquer ce qui se passe ici lorsqu’il voit son élément de sous-menu s’afficher au même niveau que tout le reste.

Je suis toujours curieux de savoir tout ce qui peut être fait pour modifier l’écran d’édition du menu dans le tableau de bord sans avoir à modifier les fichiers WordPress de base.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *