Я ищу на этом сайте и нашел много ответов на этот вопрос. Большинство из них не работает на мою тему.
Вот одно решение, которое я нашел, и оно работает в соответствии с моими потребностями.
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);
}
Этот код будет удален ul
в начале и в конце wp_nav_menu()
. Так что в моей теме я просто пишу
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
Но проблема возникает снова, когда я не добавляю и не активирую никакое меню через admin. http://domain.com/wp-admin/nav-menus.php
Вопрос:
Как мне убрать <div><ul>**</ul></div>
ли меню активно или нет. Дай мне знать
Наконец-то у меня все заработало :) 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
и menu_id
будет работать только если меню активировано. Если меню не существует menu_class
и menu_id
не как, <ul>
а как <div>
. вот почему слишком много вопросов о wp_nav_menu()
вас могут проверить это :)
menu_class
иmenu_id
параметры , чтобы установить класс и / или идентификатор атрибута на UL.