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
imenu_id
, aby ustawić atrybut klasy i / lub id na UL.menu_class
imenu_id
działa tylko wtedy, gdy menu jest aktywne. Jeśli menu nie istniejemenu_class
imenu_id
nie jest tak,<ul>
ale jak<div>
. dlatego zbyt wiele pytań nawp_nav_menu()
twój temat możesz to przetestować :)Odpowiedzi:
Funkcja wp_nav_menu przyjmuje argument fallback_cb, który jest nazwą funkcji do uruchomienia, jeśli menu nie istnieje. więc zmień kod na coś takiego:
możesz nawet usunąć kontener z menu i robić inne rzeczy z kilkoma argumentami wysłanymi do funkcji wp_nav_menu
Mam nadzieję że to pomoże.
źródło
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
Co powinienem wymienić, abywp_nav_menu_no_ul()
działał, jeśli ustawiłem wartość false nafallback_cb
? Ponieważ na razie zwraca puste.ha ha
W rzeczywistości WordPress domyślnie obsługuje to:
Domyślne ustawienie
items_wrap
to<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.źródło
<ul>
po jego dodaniu są tylko wstecz'container' => false
jeśli chcesz również pozbyć się opakowania<div>
.Poniższy kod powinien po prostu to zrobić.
Odwołaj się do tego linku dla funkcji wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
źródło
Jeśli chcesz wydrukować tylko
<a>
tagi, możesz przejść w ten sposób:źródło
Dla mnie zadziałało to:
Mam nadzieję, że to pomoże.
źródło
Wiem, że ta odpowiedź nie jest całkowicie na to pytanie, ale jest tak wiele osób, które wiedzą, jak usunąć tag ul i li w WordPress i dodać kolejny tag w WordPress.
Podobnie jak przed zastosowaniem mojego kodu WordPress daje tego rodzaju dane wyjściowe w menu
Ale ktoś chce zmienić ul na div, a li na tag, powinieneś użyć poniższego kodu
Daje to wynik w następującym formacie
źródło