2016-09-11 2 views
0

Ich habe mein sekundäres Menü auf meiner function.php Datei hinzugefügt und WordPress erlaubte mir auch, das sekundäre Menü zu wählen. Das Problem ist, dass beide Menüleisten zur gleichen Zeit erschienen sind, so dass ich eine doppelte Menüleiste oben auf meiner Homepage und auch meine über uns Seite habe. Was ich versuche, ist, meine primäre Menüleiste nur auf meiner Haupt-Homepage anzuzeigen und das sekundäre Menü auf meiner About-Us-Seite, der Serviceseite usw. zu zeigen. Wie kann ich das beheben?Wie Wordpress Sekundärmenü nur auf bestimmten Seite anzeigen?

function.php Datei

register_nav_menus(array(
     'primary' => esc_html__('Primary', 'themename'), 
     'secondary' => __('Secondary Menu', 'themename'), 
    )); 

Header.php Datei

<?php if (has_nav_menu('primary') 

     'theme_location' => 'secondary', 
     'container'   => 'nav', 
     'container_class' => 'navbar navbar-default', 
     'menu_class'  => 'nav navbar-nav navbar-right' 
; ?> 
     <?php 
    if (has_nav_menu('secondary_navigation_menu')) { 
     wp_nav_menu(array('theme_location' => 'secondary_navigation_menu')); 
    } ?> 

     <?php if (is_home()): ?> 
<?php if (has_nav_menu('primary') : ?> 
    //primary menu 
<?php endif; ?> 
<?php endif; ?> 

P. S. Beide meiner Menüleiste sind unterschiedliche CSS.

Ihre Hilfe wird geschätzt!

+1

Mögliches Duplikat [Anzeige Wordpress Menü Primärmenü angezeigt auf bestimmten Seiten] (http://stackoverflow.com/questions/39419166/display-wordpress-menu-on-specific-pages) –

+0

@PrafullaKumarSahu Hmm, ich denke, ist ziemlich ähnlich, aber ich bekomme keine Antwort. Kannst du es erklären? – R3y

+0

Ich habe meine Antwort hinzugefügt, wenn Sie es nicht bekommen, bitte fragen Sie dort. –

Antwort

0

in conditionals den eingebauten Verwenden Wordpress bietet:

Wenn Sie Ihre Startseite festgelegt haben Ihre neusten Beiträge angezeigt werden, dann sollten Sie is_home() verwenden Wenn Sie Ihre Startseite als erste Seite unter Reading > Settings > Front page displays festgelegt haben, sollten Sie is_front_page() verwenden.

Diese Menüfunktionen in eine bedingte Anweisung umwandeln, die für Ihren Fall anwendbar ist.

Sie könnten auch sie kombinieren:

<?php 
    if (!(is_front_page() || is_home())) { 
     wp_nav_menu(array( 
     'theme_location' => 'secondary', 
     'container'   => 'nav', 
     'container_class' => 'navbar navbar-default', 
     'menu_class'  => 'nav navbar-nav navbar-right' 
     )); 
    } 

?> 

Die obige bedingte Anweisung true zurück, wenn die betreffende Seite nicht die Seite zu Hause ist oder die Titelseite.

Sie können auch das bedingte Tag is_page() verwenden, um eine andere Seite zu überprüfen.

Mit dieser Funktion können Sie einen optionalen Parameter in der Klammer passieren eine bestimmte Seite oder die Anzahl der Seiten auf Ziel mit (int | string | array) Seiten-ID, Titel , Slug oder Array.

+0

Fügen Sie auch für über uns Seite, er will sekundäre Menü sowohl für die Homepage als auch über uns Seite. –

+0

Scheint nicht so: "... Was ich versuche, ist, meine primäre Menüleiste nur auf meiner Haupt-Homepage anzuzeigen, und sekundäres Menü auf meiner About-Us-Seite, der Serviceseite usw. anzuzeigen." – UncaughtTypeError

+0

@UncaughtTypeError Es zeigte Fehler auf meinem localhost, aber ich habe versucht, diesen Code – R3y

0

Sie können das sekundäre Menü auf der Seite aufrufen, die Sie allein wünschen. Mit der is_page() können Sie das Menü anzeigen, wo immer Sie wollen.

// Wenn eine einzelne Seite angezeigt wird.

is_page(); 

// Wenn Seite 42 (ID) angezeigt wird.

is_page(42); 

// Wenn die Seite mit einem post_title von "Contact" angezeigt wird.

is_page('Contact'); 

// Wenn die Seite mit einer POST_NAME (Schnecke) von "about-me" angezeigt wird.

is_page('about-me'); 

Wenn Sie zum Beispiel Sie sekundäres Menü auf allen Seiten außer home Seite gehen, um anzuzeigen, den Code wie diese haben können.

<?php 
if (!is_home()) 
{ 
    // Here you can display the Secondary menu 
    if (has_nav_menu('secondary-menu')) { /* if menu location 'secondary-menu' exists then use custom menu */ 
    wp_nav_menu(array('theme_location' => 'secondary-menu')); 
}  
else 
{ 
    // here you can display the primary menu. 
    if (has_nav_menu('primary-menu')) { /* if menu location 'primary-menu' exists then use custom menu */ 
    wp_nav_menu(array('theme_location' => 'primary-menu')); 
}  
?> 

Jetzt wird das primäre Menü nur in der Über-mir-Seite angezeigt.

is_page() unterstützt Array zu:

if(is_page(array('about-us', 'contact', 'management')) 
    //either in about us, or contact, or management page is in view 
else 
    //none of the page about us, contact or management is in view 

Ersetzen Sie Ihre header.php wie ich weiter unten zur Verfügung gestellt haben.

Ihre Header.php muss so geändert werden. Sie schreiben alle anderen Codes für die Registrierung des Menüs und andere in der Datei function.php nicht verwechseln es hier in header.php Datei.

<?php 
     if(is_home() || is_front_page()) // This ensures that the below part execute for home page or front page alone 
     { 
       if (has_nav_menu('primary-menu')) { 
       /* if menu location 'primary-menu' exists then use custom menu */ 
       wp_nav_menu(array('theme_location' => 'primary-menu')); 
       }  
     } 
     else 
     { 
       if (has_nav_menu('secondary_navigation_menu')) { 
       wp_nav_menu(array('theme_location' => 'secondary_navigation_menu')); 
       } 
     } 
?> 
+0

Wie kombiniere ich all diesen Code? Kannst du mir ein Detail zeigen? – R3y

+0

Sie müssen sekundäre Menü statt Startseite ah rechts zeigen .. –

+0

@NareshKumar.P wie viele Seiten kann er hinzufügen wie '' 'if (is_page (Array ('über-uns', 'Kontakt', 'Management')) '' 'besser wäre' '' if (! is_home()) '' 'stattdessen. –

0

Wenn Sie durch Ihre header.php gehen, sollte es so etwas geben.

if (has_nav_menu('primary') : ?> 

Jetzt in Ihrem functions.php registrieren ein anderes Menü Standort

register_nav_menus(array(
    'secondary_menu' => 'Secondary Navigation Menu', 
    'secondary_navigation_menu' => 'My Custom Footer Menu', 
)); 

und nach if (has_nav_menu('primary') : ?> Abschnitt sollte es Code-Menü etwas wie

wp_nav_menu(array( 
     'theme_location' => 'secondary', 
     'container'   => 'nav',....... 

nach diesem Add

anzuzeigen
<?php 
    if (has_nav_menu('secondary_navigation_menu')) { 
     wp_nav_menu(array('theme_location' => 'secondary_navigation_menu')); 
    } ?> 

jetzt nur auf Homepage Wrap is_home() wie

<?php if (is_home()): ?> 
<?php if (has_nav_menu('primary') : ?> 
    //primary menu 
<?php endif; ?> 
<?php endif; ?> 

, wenn Sie Ihr primäres Menü wollen nicht auf der Startseite erscheinen tun wie

<?php if (! is_home()): ?> 
    <?php if (has_nav_menu('secondary_navigation_menu') : ?> 
     //secondarymenu 
    <?php endif; ?> 
    <?php endif; ?> 
+0

@ R3y Ich habe die Seiten functions.php und header.php hinzugefügt, du musst ein untergeordnetes Thema erstellen und die header.php überschreiben und der functions.php etwas Code hinzufügen, wie ich bereits erwähnt habe . –

+0

(Entschuldigung für so viele Fragen hier, wie ich noch ein neuer Coder bin) So sollte mein finaler Code wie sein? – R3y

+0

@ R3y in your functions.php add '' 'register_nav_menus''' und Restcode gehört zu header.php. –

Verwandte Themen