it-swarm.com.de

wp_nav_menu () benutzerdefinierter Container und container_id

Also habe ich heute angefangen an meinem ersten Wordpress Theme zu arbeiten und bisher hat es sehr viel Spaß gemacht. Ich hatte jedoch Schwierigkeiten, wp_nav_menu () dazu zu bringen, das zu tun, was ich will.

Folgendes möchte ich:

<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>

Wenn ich die Dokumentation betrachte, würde ich erwarten, dass der folgende Aufruf das tut, was ich will:

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

Aber stattdessen verstehe ich Folgendes:

<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>

Für mich sieht es so aus, als würden meine benutzerdefinierten Parameter ignoriert, da die Ausgabe von wp_nav_menu() genau gleich ist. Muss ich irgendwo etwas einschalten, um dies zu ermöglichen, oder passiert etwas anderes?

EDIT

Wenn ich menu_class ändere, ändert sich seltsamerweise die Klasse des Divs (ich habe erwartet, dass der Div der Container ist), aber das Ändern von menu_id bewirkt nichts.

EDIT 2

Selbst wenn Sie die Datei nav-menu-template.php aufrufen und die Standardeinstellungen für container_id, container_class, menu_id ändern, geschieht nichts. Durch Ändern von menu_class in yyy wird die Klasse des Div von menu in yyy geändert.

3
Tom Savage

ich hatte das Problem beim Speichern: Wenn Sie das Menü nicht im Admin-WordPress erstellen, verwenden Sie eine Fallback-Methode und erstellen das Menü aus allen aktiven Seiten. Wenn dies passiert, werden die Optionen aus dem wp_nav_menu nicht verwendet. .

also: erstelle einfach das menü im admin und du kannst das wrapper-tag auf "nav" ändern

6
user2802

Erstens können Sie WordPress nicht dazu bringen, <nav> -Elemente mit nativen Funktionen auszugeben. <nav> ist ein HTML5-Tag, und WordPress wurde entwickelt, um eine XHTML-Ausgabe zu generieren ... d. h. kein <nav>-Element.


Edit: Anscheinend erlaubt die Funktion nav ... aber denken Sie daran, dass der Rest des WordPress-Kerns immer noch für die Ausgabe von XHTML und nicht von HTML5 ausgelegt ist ... achten Sie darauf, dass Ihre Site ordnungsgemäß validiert wird .


Versuchen Sie, diesen Verweis zu entfernen. Möglicherweise wird der Fehler verursacht, der Ihre 'container_id' => 'topnav'-Anweisung ignoriert. Wenn die Dinge ohne den Verweis auf nav richtig funktionieren, sollten Sie Folgendes haben:

<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

ich bin mir nicht sicher, ob noch jemand nach einer Lösung sucht. Ich bin gerade hier angekommen, um die Antwort selbst zu finden. Ich dachte, ich teile meine Lösung :)

Wollte auch das <nav> anstelle des <div> -Elements verwenden und löste es durch Entfernen des <div>, wie auf dieser Seite angegeben, WordPress-Codex:http://codex.wordpress.org/ Funktionsreferenz/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' );
?>

Zu meiner functions.php-Datei hinzugefügt, die Themendatei mit dem <nav> -Tag markiert & alles hat für mich gut funktioniert;) Ich hoffe, das hilft :)

0
user3160