web-dev-qa-db-fra.com

Un site, 2 sections distinctes: deux menus de navigation différents?

J'ai un site qui est en deux moitiés distinctes. J'aimerais que le même modèle s'applique à l'ensemble du site (du point de vue de l'aspect et de la convivialité), mais que chaque "moitié" du site ait son propre menu de navigation supérieur. Aucun menu latéral n'est utilisé.

La page d'accueil sera une page personnalisée qui dirige l'utilisateur vers l'un ou l'autre des deux côtés.

Comment pourrais-je y parvenir?

Merci beaucoup

Austen

3
Austen Osborne

La solution la plus simple serait de créer un cookie. Ensuite, vérifiez quel cookie l'utilisateur a avant d'imprimer le menu.

Une autre solution consisterait à ajouter une variable de requête afin que les deux moitiés aient des URL différentes, par exemple mysite.com/?half=A et mysite.com/?half=B. Ensuite, vous vérifiez la requête var avant d’imprimer le menu. Cette solution rendrait possible des permaliens pour les deux moitiés différentes. (et vous pouvez rendre les URL jolies si vous voulez)

1
offroff

Utilisez un menu personnalisé avec wp_nav_menu() . Ensuite, vérifiez si vous êtes sur la première ou la deuxième partie:

if ( ! is_home() || is_front_page() )
{
    $args = array(); // Define your menu here
    $query_string = explode( '/', $_SERVER['REQUEST_URI'] );

    // You need to var_dump( $query_string ); 
    // to see which index/key is matching your requested query string part
    if ( 'PART_ONE' === $query_string[0] )
    {
        wp_nav_menu( array_merge( $args, array( 'menu' => 'MENU PART ONE' ) ) );
    }
    else
    {
        wp_nav_menu( array_merge( $args, array( 'menu' => 'MENU PART TWO' ) ) );
    }
}
1
kaiser

Je pense que la solution la plus simple serait de créer deux menus de navigation dans le backend de Wordpress, puis de charger des en-têtes différents en fonction de la page sur laquelle se trouve le visiteur.

Commencez par copier votre header.php 2 fois, en donnant vos trois fichiers d’en-tête. Exemple: header.php, headerA.php, headerB.php

Maintenant, ouvrez votre fichier header.php original et remplacez tout le code par quelque chose comme ceci:

<?php
if (is_page('contact')){
    <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
elseif (is_page('gallery')){
    <?php include(TEMPLATEPATH.'/headerB.php'); ?>
}
else {
    <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
?>

Cela indiquera à Wordress quel en-tête charger, en fonction du type de page sur lequel se trouve le visiteur.

Assurez-vous également de charger le bon menu dans chaque fichier d’en-tête en utilisant:

<?php wp_nav_menu( array('menu' => 'Menu A )); ?>
1
Travis Pflanz