Przeszukuję tę stronę i znalazłem wiele odpowiedzi na to pytanie. Większość z nich nie działa na mój temat.
Oto jedno rozwiązanie, które znalazłem i działa zgodnie z moimi potrzebami.
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);
}
Ten kod zostanie usunięty ul
na początku i na końcu wp_nav_menu()
. Więc w moim temacie po prostu piszę
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Ale problem pojawia się ponownie, gdy nie dodam ani nie aktywuję żadnego menu przez administratora. http://domain.com/wp-admin/nav-menus.php
Pytanie:
Jak usunąć, <div><ul>**</ul></div>
czy menu jest aktywne, czy nie. Daj mi znać
W końcu udało mi się to :) 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
i menu_id
działa tylko wtedy, gdy menu jest aktywne. Jeśli menu nie istnieje menu_class
i menu_id
nie jest tak, <ul>
ale jak <div>
. dlatego zbyt wiele pytań na wp_nav_menu()
twój temat możesz to przetestować :)
menu_class
imenu_id
, aby ustawić atrybut klasy i / lub id na UL.