Zvýraznění odkazu v menu pro vlastní typy obsahu
Vlastní typy obsahu (custom post types, CPT) jsou skvělá věc, ale mají jeden drobný nešvar -> vložím-li do navigace odkaz na stránku s jejich výpisem, tak jej WordPress neoznačí jako aktivní, když na tento výpis přejdu. WordPressu je třeba v tuto chvíli trochu pomoci.
Nejdříve odkazu v menu přidám vlastní CSS třídu, například „vypis-cpt“. Pokud v editaci odkazu pole CSS třídy nevidíte (což je pravděpodobné), tak si jej odkryjte v sekci Nastavení zobrazených informací. Tuto třídu v CSS nijak nevyužíváme, hodí se nám totiž jiným způsobem.
Do functions.php vložíme následující kód:
1 2 3 4 5 6 7 8 9 10 |
function zvyrazneni_odkazu_na_vypis($classes, $item) { $post_type = get_query_var('post_type'); if($post_type == 'muj-cpt' && in_array('vypis-cpt',$classes)) { $classes[] = 'current-menu-item'; } return $classes; } add_filter('nav_menu_css_class', 'zvyrazneni_odkazu_na_vypis', 10, 2); |
Filtr nav_menu_css_class postupně prochází všechny odkazy v navigaci. Funkce jednoduše zjistí, jestli je zobrazován archiv/výpis vlastního typu obsahu (v tomto případě to platí i pro „single“ stránku, pro kterou chceme nadřazený odkaz zvýraznit také), a podívá se, jestli odkaz neobsahuje CSS třídu „vypis-cpt“. Pokud ano, tak ví, že je to odkaz, který má zvýraznit. A toho docílí tím, že do pole předaných CSS tříd doplní tradiční „aktivní“ třídu, a pole tříd zase vrátí zpět.
A problém je vyřešen.
← Zapnutí podpory náhledových obrázků a nastavení rozměrů Stránkování archivů → Všechny WordPress kódy