it-swarm.com.de

Wie füge ich eine aktive Klasse auf der Seite mit den aktuellen Menüpunkten hinzu?

Ich habe zwei Links: Produkte und News.

Wenn ich auf Produkte oder Nachrichten klicke, wird eine Archivseite mit einigen Beiträgen zurückgegeben. Wenn ich auf einen Beitrag klicke, wird eine einzelne Seite dieses Beitrags zurückgegeben.

Im Menü verwende ich diesen Code für <li>, um eine Klasse mit dem Namen active hinzuzufügen, wenn die Seite zu Hause ist:

<li<?php if(is_home()) {?> class="active"<?php } ?>>

Aber ich weiß nicht, wie ich es machen soll, wenn ich zwei Archivseiten und zwei Singleseiten habe.

Wenn ich if( is_archive() || is_single() ) benutze, fügt es Klasse auf beiden Menü itens hinzu.

Etwas Hilfe wäre dankbar.

3

Sie können für jede bedingte Klasse in der Funktionsdatei Ihres untergeordneten Themas folgende Klassen hinzufügen:

Hier ist ein Beispiel, das Sie an Ihre Bedürfnisse anpassen können.

add_filter('nav_menu_css_class' , 'wpsites_nav_class' , 10 , 2);

function wpsites_nav_class($classes, $item){

if( is_archive() && $item->title == "Products"){     

         $classes[] = "products-class";
 }
 return $classes;

Quelle http://codex.wordpress.org/Function_Reference/wp_nav_menu#Adding_Conditional_Classes_to_Menu_Items

Anschließend können Sie Ihr Navigationsmenü mit der neuen Klasse in der style.css-Datei für untergeordnete Themen formatieren.

.products-class {

Your CSS declarations
}

Dieser CSS-Code ist abhängig vom obigen PHP Code.

3
Brad Dalton

Ich nehme an, Ihre Products- und News-Posts sind benutzerdefinierte Posts.
Für beide bedingten Tags gibt es eine $post_typespezifische Entsprechung:

if (is_post_type_archive('products')) {
   // ...
} elseif (is_post_type_archive(array('news', 'something'))) {
   // ...
} elseif (is_singular('products')) {
   // ...
} elseif (is_singular(array('news', 'something'))) {
   // ...
}

Für Produkte wäre es also:

if (is_post_type_archive('products') || is_singular('products'))

News entsprechend.

Referenzen:

0
tfrommen