Ich habe auf dieser Site gesucht und viele Antworten für diese Frage gefunden. Die meisten von ihnen arbeiten nicht an meinem Thema.
Hier ist eine Lösung, die ich gefunden habe und die nach meinen Bedürfnissen funktioniert.
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 entfernt ul
zu Beginn und am Ende von 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 den <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>
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:
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'fall_back_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function fall_back_menu(){
return;
}
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.
Eigentlich unterstützt WordPress dies standardmäßig:
wp_nav_menu(array(
'items_wrap' => '%3$s'
));
Die Standardeinstellung für items_wrap
ist <ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.
Der folgende Code sollte es einfach machen.
<?php
$my_menu = array(
'menu' => 'main-menu',
'container' => '',
'items_wrap' => '%3$s'
);
wp_nav_menu( $my_menu );
?>
Verweisen Sie auf diesen Link für die Funktion wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
Wenn Sie nur <a>
Tags drucken möchten, können Sie folgendermaßen vorgehen:
$primaryMenu = array(
'theme_location' => 'primary',
'menu' => '',
'container' => '',
'container_class' => false,
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => 'primary-menu',
'echo' => false,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => ''
);
echo strip_tags( wp_nav_menu( $primaryMenu ), '<a>' );
Für mich funktionierte Folgendes:
<?php wp_nav_menu( array(
'container' => '',
'items_wrap' => '%3$s'
) ); ?>
Ich hoffe es hilft.