Я ищу на этом сайте и нашел много ответов на этот вопрос. Большинство из них не работает на мою тему.
Вот одно решение, которое я нашел, и оно работает в соответствии с моими потребностями.
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
параметры , чтобы установить класс и / или идентификатор атрибута на UL.menu_class
иmenu_id
будет работать только если меню активировано. Если меню не существуетmenu_class
иmenu_id
не как,<ul>
а как<div>
. вот почему слишком много вопросов оwp_nav_menu()
вас могут проверить это :)Ответы:
Функция wp_nav_menu принимает аргумент fallback_cb, который является именем функции, которую нужно запустить, если меню не существует. поэтому измените ваш код на что-то вроде этого:
вы даже можете удалить контейнер из меню и делать другие вещи с помощью дополнительных аргументов, отправляемых в функцию wp_nav_menu
Надеюсь это поможет.
источник
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
что я должен заменить, чтобы заставитьwp_nav_menu_no_ul()
работать, если я установил false дляfallback_cb
? Потому что сейчас вернется пустым.ha ha
На самом деле WordPress поддерживает это по умолчанию:
По умолчанию для
items_wrap
IS<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.источник
<ul>
после того, как он уже был добавлен, просто задом наперед'container' => false
если вы хотите избавиться от упаковки,<div>
а также.Приведенный ниже код должен просто сделать это.
Ссылка на эту ссылку для функции wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu
источник
Если вы хотите печатать только
<a>
теги, вы можете пойти по этому пути:источник
Для меня то, что сработало, было так:
Надеюсь, это поможет.
источник
Я знаю, что этот ответ не полностью на этот вопрос, но есть очень много людей, которые узнают, как удалить теги ul и li в WordPress и добавить еще один тег в WordPress.
Как и до применения моего кода WordPress выдает эти типы вывода в меню
Но кто-то хочет преобразовать ul в div и li в тег, тогда вы должны использовать приведенный ниже код
Это дает вывод в следующем формате
источник