WordPress nabízí možnost využití menu upravitelných z administrace. To je velký krok kupředu směrem k CMS. Pokud se učíte, jak tvořit šablony pro WP nebo jen máte starou šablonu a potřebovali byste ji modernizovat o tuto funkcionalitu, pomůže vám tento rychlý exkurz.
Předně je nutné v souboru functions.php nové mezu zaregistrovat. Stačí vložit následující kód:
if ( function_exists( 'register_nav_menus' ) ) { register_nav_menus( array( 'primary_menu' => 'Hlavní menu', 'foot_menu' => 'Menu v patičce' ) ); } |
Jistě jste si všimli, že jsme tímto příkazem zaregistovali hned dvě navigační menu. Hlavní menu a menu v patičce. Pokud byste chtěli jen jedno, odstraňte řádek “‘foot_menu’ => ‘Menu v patičce’”, nebo naopak ukončete tento řádek čárkou a přidejte ješte jeden. Dbejte na to, že první parametr (tedy ‘foot_menu’ a ‘primary_menu’) musí být unikátní. Druhý slouží pro vaši orientaci, takže ideálně by měl být také unikátní, ale WordPress na tom netrvá.
Tímto jste si zaregistrovali menu a nyní již naleznete v administraci navigačních menu (Vzhled->Menu) nalevo v boxu své dvě pozice (“Hlavní menu”, “Menu v patičce”) a lze vytvářet menu a přiřazovat je těmto dvoum pozicím.
Nyní tedy již zbývá pouze nechat zobrazit menu v šabloně. Je nutné zvolit místo, kde chcete menu zobrazit – to je na vás. Pokud modernizujete starou šablonu, budete nejspíš nahrazovat funkci “wp_list_categories” umístěnou v souboru header.php nebo sidebar.php.
Pro vložení menu do šablony použijte níže uvedený kód. Všechny uvedené parametry jsou parametry defaultní a proto, když je nebudete měnit, můžete je, pro zkrácení kódu, odstranit. Funkce wp_nav_menu má ještě další parametry (menu,walker,falback_cp), ale ty jsou pro začátečníka zbytečně komplikované a zřítka využitelné. Koho by zajímaly, nechť se obrází na kodex
<?php $args = array( 'theme_location' => 'primary_menu', //unikátní identifikátor menu nastavený v functions.php 'container' => 'div', //nebo 'nav' nebo false. Určuje, co se má použít jako element obklopující element UL samotného menu. False znamená, že žádný takový element nebude 'container_class' => 'menu-{menu slug}-container', //třída (class) elementu UL obklopující samotné menu 'container_id' => '', //parametr ID elementu obklopujícího element UL samotného menu 'menu_class' => 'menu', //třída (class) elementu UL obklopujcí menu 'menu_id' => 'nav', //parametr ID elementu UL obklopující menu 'echo' => true, //má se menu vypsat, nebo jen vrátit pomocí fce return? 'before' => '', //text před HTML tagem <a> 'after' => '', //text za HTML tagem </a> 'link_before' => '', //text před samotným textem odkazu 'link_after' => '', //text za samotným textem odkazu 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', //HTML markup vlastního menu 'depth' => 0, //do kolikáté úrovně zobrazovat podstránky. 0 znamená všechny úrovně ); wp_nav_menu( $args ); ?> |