Comment afficher un menu sur certaines pages uniquement?

10

Au lieu d'utiliser des widgets de la barre latérale pour indiquer sur quelle page ils doivent être visibles, j'aime choisir dans les paramètres du menu à apparaître sur des pages spécifiques.

Manière Wordpress par défaut:

À quoi cela ressemble par défaut

Donc, les projets sont une page et ont quelques sous-pages. Mais que se passe-t-il si j'ai comme 10 autres de ces pages et sous-pages avec la même situation.

Je voudrais ajouter un paramètre supplémentaire (une liste des pages de niveau supérieur):

Où je veux le réglage

Mais je ne trouve aucune documentation, actions, filtres, etc. lorsque ces paramètres sont chargés.


la source
Je pense que cela dépend de votre thème. Mais comme point de départ, codex.wordpress.org/Navigation_Menus devrait aider !!
sri
1
J'ai vu ce lien plusieurs fois, il n'y a aucune information sur l'ajout de paramètres à un menu. Créez et affichez uniquement un menu personnalisé ...
Aie. Je pense que c'est une option native de Joomla, apparemment pas dans WordPress. Pour votre site, vous pouvez créer des fichiers de catégorie / pages.php de sortie personnalisés, puis y ajouter un menu personnalisé unique, mais c'est une douleur totale dans le cou. Vous auriez quatre pages .php de sortie et quatre menus uniques, un pour chaque sélection ci-dessus. Un moyen facile à mettre en œuvre consiste à utiliser les widgets de la barre latérale comme principal outil de navigation. l'outil de widget de menu personnalisé est assez simple. Créez un menu pour chaque page, en supposant que vous disposez de modèles uniques pour chacune. Remarque, la barre latérale n'est pas le meilleur mot. Vous pouvez mettre un widget n'importe où.
zipzit
Je connais les barres latérales et les widgets. Ces petites parties de site Web qui ne sont pas non plus connectées à une page. Je ne veux pas utiliser les barres latérales et les widgets et les ai désactivés car je n'en utilise aucun. Quoi qu'il en soit, je pense que les emplacements de menu sont des paramètres du menu, pas un paramètre d'un widget qui contient un menu.
Votre question est-elle simplement "Comment ajouter des paramètres de menu personnalisés?" ou s'agit-il également de "Comment utiliser les paramètres de menu personnalisés pour afficher un menu sur certaines pages uniquement?"?
engelen

Réponses:

3

C'est une bonne option, mais je suis d'accord avec sri, pour l'instant cela dépend vraiment de votre thème. Vous pouvez contourner is_page () . Vous devez écrire quelque chose comme ça sur votre fichier de thème page.php :

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

Si vous souhaitez également afficher la barre latérale sur d'autres pages, vous pouvez utiliser la logique ou comme ceci:

if (is_page('projects') || is_page('home') || is_page('post-page'))
Bernie
la source
Je ne connais pas de meilleure solution, mais c'est vraiment une mauvaise pratique dans le monde du codage. Je pense qu'au moins peut-être faire une boucle dans un tableau ou quelque chose, puis effectuer un échange de menu. J'apprécie vraiment la réponse. Soupir
BRogers
1

Je pense qu'il est préférable d'utiliser un plugin pour cela, vous pouvez donc conserver la fonctionnalité même si vous changez de thème à l'avenir. Découvrez ce plugin. Il fait ce que vous voulez, mais légèrement différemment de la façon dont vous vous êtes moqué.

https://wordpress.org/plugins/page-specific-menu-items/

Si cela vous aide, veuillez voter ou accepter comme réponse. Merci!

Mark.C
la source
J'ai essayé ce plugin. Avec ce plugin, vous ne pouvez sélectionner qu'un menu pour un type de publication spécifique. Je souhaite sélectionner le menu pour chaque page.
Si vous n'avez qu'un seul menu sur le site et que vous souhaitez simplement masquer certains liens dans ce menu lorsqu'un utilisateur est sur une certaine page, ce plugin le fait. Après avoir sélectionné le type de publication sur lequel vous voulez que le menu (la page est ce que vous voulez, ou plus), allez ensuite modifier une page et vous pouvez vérifier les liens que vous souhaitez masquer. Cet autre fait le contraire. Vous sélectionnez un menu dans une metabox sur l'écran de la page d'édition, vous avez donc besoin de plusieurs menus pour choisir: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C
1

Voici comment vous pouvez le faire dans Twenty Twelve themes header.php copié dans un thème enfant.

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

Créez un nouveau menu avec les éléments que vous souhaitez afficher et remplacez le nom du menu conditionnel dans le code ci-dessus par le nom de votre menu.

Les noms de menu_class peuvent devoir être modifiés pour des thèmes autres que Twenty Twelve.

La source

Brad Dalton
la source
1

Je sais que ce fil est ancien mais au cas où quelqu'un aurait besoin d'une recherche de réponse pour cela, je voudrais suggérer les menus conditionnels de themify https://themify.me/conditional-menus . Vous choisissez le menu à utiliser, par page, catégorie, méta, tout. et c'est gratuit :) j'espère que cela aide

rosane
la source
0

Si vous êtes prêt à réengager vos widgets et que vous souhaitez une solution simple, vous pouvez utiliser un plug-in appelé Afficher les widgets. Je l'ai utilisé et j'utilise la partie texte où vous pouvez ajouter des liens vers l'endroit où vous voulez aller. Cela fonctionne que les liens soient sur votre propre site ou vers un autre site. Il a un espace en dessous du texte où vous pouvez choisir les pages à afficher ou à masquer. Vous pouvez toujours supprimer les widgets que vous n'utilisez pas.

J'ai joué avec les menus pendant un bon moment avant de chercher et de trouver ce plugin. Ça marche bien.

Vous pouvez le trouver dans la section Plugins de WordPress.org.

Susan
la source
Merci beaucoup! Mais je ne cherche pas de plugin supplémentaire. Et je n'utilise pas de widgets car ces parties de site Web flottantes sont trop difficiles à comprendre pour certains de mes clients.
0

Une option serait de créer des modèles personnalisés pour chaque menu dont vous disposez. (Cela fait référence à la case à cocher Emplacement des thèmes) Ensuite, sur chaque page, vous choisissez le modèle que vous souhaitez qu'il utilise et il utilisera également le menu associé à ce modèle.

https://codex.wordpress.org/Page_Templates

Cela vous donne le même résultat que je pense que vous recherchez, mais plutôt que de dire à chaque menu sur quelle page il s'affiche, vous direz à chaque page quel menu affichera. Un avantage supplémentaire de le faire de cette façon est qu'il n'y a aucun moyen pour vous de dire accidentellement à deux menus d'être au même endroit en même temps.

KnightHawk
la source
Oui, j'ai regardé ça. Mais le développeur ne sait jamais combien de menus l'utilisateur a besoin. Je dois donc créer beaucoup de modèles pour les couvrir tous. template_a.php, template_b.php, template_c.phpEtc.
-1

Vous pouvez utiliser le plugin Menu Swapper pour faire la même chose depuis le panneau d'administration. Voici la démo de ce plugin.

hmjha
la source