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.
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
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>
Die Menü-API ist teilweise kaputt, man kann sich nicht auf die Ausgabe verlassen. Es gibt verschiedene Tickets im Trac, ich habe nur eine schnelle Suche durchgeführt, aber vielleicht wird eine Lösung für Ihr Problem in einem von ihnen erklärt:
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 :)