web-dev-qa-db-fra.com

Comment puis-je afficher un menu sur certaines pages uniquement?

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

Manière par défaut de Wordpress:

How it looks default

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

J'aimerais ajouter un paramètre supplémentaire (une liste des pages de premier niveau):

Where I want the setting

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

9
user40422

C'est une bonne option, mais je suis d'accord avec sri, cela dépend vraiment de votre thème. Vous pouvez faire un travail de contournement avec is_page () . Vous devez écrire quelque chose comme ceci sur votre fichier page.php theme:

<?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 logic ou comme ceci:

if (is_page('projects') || is_page('home') || is_page('post-page'))
3
Bernie

Je sais que ce fil est ancien, mais au cas où quelqu'un aurait besoin d'une recherche de réponse, j'aimerais 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 :) espérons que cela aide

1
rosane

Voici comment vous pouvez le faire dans les vingt thèmes douze 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 de menu conditionnel dans le code ci-dessus par le nom de votre menu.

il peut être nécessaire de changer les noms de menu_class pour des thèmes autres que Twenty Twelve.

La source

1
Brad Dalton

Je pense que l’utilisation d’un plugin pour cela est préférable, vous pouvez donc conserver la fonctionnalité même si vous changez de thème à l’avenir. Découvrez ce plugin. Cela fait ce que vous voulez, mais un peu différemment de la façon dont vous vous en êtes moqué.

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

Si cela vous aide, votez ou acceptez comme réponse. Merci!

1
Mark.C

Une option serait de créer des modèles personnalisés pour chaque menu que vous avez. (Cela fait référence à la case à cocher des emplacements de thème) Ensuite, sur chaque page, vous choisissez le modèle que vous souhaitez utiliser et le menu associé à ce modèle est également utilisé.

https://codex.wordpress.org/Page_Templates

Je pense que vous recherchez le même résultat, mais plutôt que d'indiquer à chaque menu la page affichée, vous allez indiquer à chaque page le menu à afficher. Un avantage supplémentaire de cette façon de procéder est qu’il n’ya aucun moyen de dire accidentellement à deux menus de se trouver au même endroit au même moment.

0
KnightHawk

Si vous êtes prêt à réengager vos widgets et que vous souhaitez une solution simple, vous pouvez utiliser un plugin appelé Display Widgets. J'ai utilisé cela et utiliser la partie texte où vous pouvez ajouter des liens vers où vous voulez aller. Cela fonctionne que les liens se trouvent sur votre propre site ou sur un autre site. Il y 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 longtemps joué avec les menus avant de chercher et de trouver ce plugin. Ça marche bien.

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

0
Susan