it-swarm-eu.dev

wp_nav_menu () vlastní kontejner a includeer_id

Takže dnes jsem začal pracovat na svém prvním tématu Wordpressu a zatím to bylo hodně legrace. Měl jsem však potíže se získáním wp_nav_menu () k tomu, co chci.

Tady je to, co chci:

<nav id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</nav>

Při pohledu do dokumentace bych očekával, že následující výzva bude dělat to, co chci:

<?php wp_nav_menu(array( 'container' => 'nav', 'container_id' => 'topnav' )); ?>

Ale místo toho jsem si to:

<div class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>

Pro mě to vypadá, že mé vlastní parametry jsou ignorovány, protože výstup z wp_nav_menu() je přesně stejný. Musím se někam obrátit, abych to umožnil, nebo se něco děje?

UPRAVIT

Zvědavě, když změním menu_class změní třídu div (očekával jsem, že div bude kontejner), ale změna menu_id nedělá nic.

EDIT 2

Dokonce jít do nav-menu-template.php a změnit výchozí nastavení pro kontejner, container_id, container_class, menu_id nedělá nic. Změna menu_class na yyy změní třídu div z menu na yyy.

3
Tom Savage

měl jsem problém s uložením: je to proto, že pokud nechcete vytvořit menu v admin wordpress použít nouzovou metodu a vytvoří menu ze všech aktivních stránek ... a pokud se to stane, než možnosti z wp_nav_menu nejsou použity .. .

takže: stačí vytvořit menu v admin a u můžete změnit značku wrapper na "nav"

6
user2802

Nejdříve nebudete moci získat WordPress pro výstup jakéhokoliv prvku <nav> pomocí nativních funkcí. <nav> je tag HTML5 a WordPress je vytvořen tak, aby generoval výstup XHTML ... tj. prvek <nav>.


Edit: Zdá se, že funkce povoluje nav ... ale mějte na paměti, že zbytek jádra WordPressu je stále vytvořen pro výstup XHTML, ne HTML5 ... dbejte na to, aby vaše stránky správně ověřovaly .


Zkuste odstranit tento odkaz ... může být příčinou chyby, která ignoruje instrukce 'container_id' => 'topnav'. Pokud věci fungují správně bez odkazu na nav, měli byste mít toto:

<div id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>
1
EAMann
1
hakre

nejsem si jistý, jestli to někdo ještě chce vyřešit - ale tady jsem se snažil najít odpověď sám - pomyslel jsem si, že budu sdílet své řešení :)

Také chtěl použít <nav> místo elementu <div> a vyřešil to odstraněním <div>, jak je uvedeno na této stránce, wordpress codex:http://codex.wordpress.org/ Function_Reference/wp_nav_menu :

<?php
function my_wp_nav_menu_args( $args = '' )
{
    $args['container'] = false;
    return $args;
} // function

add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
?>

Přidán do mého souboru function.php, označil soubor motivu s tagem <nav> a vše fungovalo dobře pro mě;) doufám, že to pomůže :)

0
user3160