Ich habe auf dieser Site gesucht und viele Antworten auf diese Frage gefunden. Die meisten von ihnen arbeiten nicht an meinem Thema.
Hier ist eine Lösung, die ich gefunden habe und die meinen Bedürfnissen entspricht.
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
Dieser Code wird ul
am Anfang und am Ende von entfernt wp_nav_menu()
. Also schreibe ich einfach in mein Thema
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Aber das Problem tritt erneut auf, wenn ich kein Menü über den Administrator hinzufüge oder aktiviere. http://domain.com/wp-admin/nav-menus.php
Frage:
Wie entferne ich das <div><ul>**</ul></div>
ob das Menü aktiv ist oder nicht. Gib mir Bescheid
Endlich habe ich es geschafft :) functions.php
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'default_page_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function default_page_menu() {
wp_list_pages('title_li=');
}
header.php
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
menu_class
und können Siemenu_id
eine Klasse und / oder ein ID-Attribut für den UL festlegen.menu_class
undmenu_id
funktionieren nur, wenn das Menü aktiviert ist. Wenn das Menü nicht existiertmenu_class
undmenu_id
nicht als<ul>
aber als ist<div>
. das ist, warum zu viele Fragen überwp_nav_menu()
Sie es testen können :)Antworten:
Die Funktion wp_nav_menu akzeptiert ein Argument von fallback_cb. Dies ist der Name der Funktion, die ausgeführt werden soll, wenn das Menü nicht vorhanden ist. Also ändere deinen Code in so etwas wie:
Sie können den Container sogar aus dem Menü entfernen und andere Aufgaben mit weiteren Argumenten ausführen, die an die Funktion wp_nav_menu gesendet wurden
Hoffe das hilft.
quelle
nav-menu-template.php
fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. Set to false for no fallback
Was soll ich ersetzen, um diewp_nav_menu_no_ul()
Arbeit zu machen , wenn ich falsch auf das setzefallback_cb
? Weil es vorerst leer ist.ha ha
Eigentlich unterstützt WordPress dies standardmäßig:
Die Standardeinstellung für
items_wrap
ist<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.quelle
<ul>
nach dem Hinzufügen sind nur rückwärts'container' => false
wenn Sie die Verpackung<div>
auch loswerden möchten .Der folgende Code sollte es einfach machen.
Verweisen Sie auf diesen Link für die Funktion wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
quelle
Wenn Sie nur
<a>
Tags drucken möchten , können Sie folgendermaßen vorgehen:quelle
Für mich funktionierte Folgendes:
Ich hoffe es hilft.
quelle