Functieonderzoek wp_nav_menu

Toen WordPress 3 ons de nieuwe Menus-functionaliteit presenteerde, veranderde het de manier waarop we navigatie-menu's voor altijd bekeken. We waren niet langer gebonden aan het gebruik van de normale paginalijstfuncties of aan het bouwen van onze eigen aangepaste menufuncties om categorie- en pagina-menu's te integreren, evenals externe of hard-linked items binnen een nav-menu. Maar hoe kunnen we deze nieuwe functionaliteit gebruiken? In deze tutorial duiken we diep in alles dat het wp_nav_menu functie kan doen, gebruik de Walker Class om een ​​subbeschrijving toe te voegen en een aantal gerelateerde functies aan te raken.


De parameters

De functie heeft verschillende parameters om mee te werken. Hier zijn de standaardwaarden zoals vermeld in de WordPress.org Codex:

  , 'menu' =>, 'container' => 'div', 'container_class' => 'menu- menu slug -container', 'container_id' =>, 'menu_class' => 'menu', 'menu_id' = >, 'Echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' =>, 'after' =>, 'link_before' =>, 'link_after' =>, 'items_wrap' => '% 3 $ s',' diepte '=> 0,' wandelaar '=>); ?> 

Locatie van het thema

Met behulp van deze parameter kunnen we een themalocatie instellen die vervolgens op de menu-pagina's wordt gebruikt om een ​​menu in dat deel van uw thema te laten werken, zonder dat u handmatig hoeft te bepalen welk menu daar moet verschijnen. Dit is erg handig voor themadistributeurs omdat je conditionals kunt gebruiken om een ​​menu alleen weer te geven als de gebruiker een menu voor die locatie heeft gedefinieerd. De enige andere vereiste is dat u de functie gebruikt register_nav_menu () om die locaties te registreren. Dit gebeurt meestal vanuit uw functiebestanden wanneer u ondersteuning voor menu's instelt.

Laten we beginnen met het bouwen van onze aangepaste menufunctieparameters, ervan uitgaande dat we een themapositie genaamd "primair".

 $ params = array ('theme_location' => 'primair');

Menu

Deze parameter wordt gebruikt om handmatig te definiëren welk menu moet worden gebruikt. In ons voorbeeld stellen we alleen een algemene menulocatie in en definiëren we niet een exact te gebruiken locatie, maar als we de functie zouden willen vertellen om een ​​menu met de naam "Primaire navigatie" te gebruiken, zouden onze parameters er als volgt uitzien:

 $ params = array ('theme_location' => 'primary', 'menu' => 'Primaire navigatie');

Houder

Standaard wordt ons menu ingepakt in een div, maar als je op mij lijkt, heb je dit meestal niet nodig en wil je waarschijnlijk de hoeveelheid verminderen divs en andere tags die worden gebruikt om uw code zo overzichtelijk mogelijk te houden. U kunt deze parameter ook gebruiken om een ​​andere tag te definiëren, zoals een html5

of