it-swarm-eu.dev

Jak přidat aktivní třídu na aktuální stránku menu?

Mám dva odkazy: Produkty a Novinky.

Když kliknu na Produkty nebo Zprávy, vrátí mi stránku s archivem, která obsahuje některé příspěvky, když kliknu na příspěvek, který mi vrátí jednu stránku tohoto příspěvku.

V menu používám tento kód v <li> pro přidání třídy nazvané aktivní, pokud je stránka doma:

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

Ale já nevím, jak to udělat, když mám dvě archivní stránky a dvě singlové stránky.

Pokud používám if( is_archive() || is_single() ), přidá to třídu do obou menu.

Nějaká pomoc by byla oceněna.

3

Mohli byste přidávat podmíněné třídy pro každý soubor podřízeného motivu:

Zde je jeden příklad, který můžete upravit podle svých potřeb.

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;

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

Pak si můžete vytvořit menu nav s novou třídou v podřízeném souboru style.css.

.products-class {

Your CSS declarations
}

Tento kód CSS je podmíněn výše uvedeným kódem PHP.

3
Brad Dalton

Předpokládám, že vaše Products a News příspěvky jsou vlastní příspěvky.
Pro oba podmíněné tagy existuje $post_type- specifický ekvivalent:

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

Takže pro Produkty by to bylo:

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

Novinky odpovídajícím způsobem.

Odkazy:

0
tfrommen