Это мой первый проект с участием WordPress, и я застрял, пытаясь создать пользовательский инструмент для меню нижнего колонтитула.
Я в основном хочу изменить меню со <ul> <li></li> </ul>
структуры на <p> <span></span> </p>
структуру.
Меню и прочее отображает файл , и я был в состоянии настроить start_el
и end_el
функции без проблем , так что я теперь получить это:
<ul> <span>*link*</span> <span>*link*</span> </ul>
Что, очевидно , на полпути, я не написал start_lvl()
и end_lvl()
теги , как показано ниже , но они игнорируются WordPress - ничего я помещал в них (даже die()
) выполняется (что немного подозрительно) , но я знаю , что класс вызывается из start_el()
функция.
function start_lvl(&$output, $depth = 0, $args = array()) {
$output = "\n<p class=\"sub-menu\">\n";
}
function end_lvl(&$output, $depth = 0, $args = array()) {
$output .= "\n</p>\n";
}
Кто-нибудь знает, почему это происходит - я пропустил что-то действительно очевидное !?
Я использую последнюю версию WordPress на Apache с PHP, 5.3.6
если это поможет.
Заранее спасибо,
Феликс :)
Ответы:
Ваш класс my_extended_walker в порядке, но при вызове функции wp_nav_menu используйте параметр items_wrap .
Start_lvl используется для дочерних элементов.
источник
Хорошо, не уверен, что я прочитал неправильно, когда опубликовал это, но весь ваш класс должен выглядеть примерно так:
А затем передать «ходок» в качестве параметра при вызове
wp_nav_menu
wp_nav_menu( array( 'walker'=>new my_extended_walker() ) );
Если у вас есть это, вы должны быть в порядке. Я смотрю на рабочий код, который делает именно это. Я не знаю, как разместить там
<p>
теги. Вы можете получить неверную разметку.источник
<div>
вместо того,<p>
чтобы просто посмотреть, смогу ли я заставить эти функции делать что-нибудь, но пока что нет радости :(<div>
И<p>
не должны нарушать Уолкера , но может привести к недопустимой разметкой. У вас есть$output =
и не$output .=
по вашемуstart_lvl
. Это может вызвать проблемы. Это полный Уокер, который вы опубликовали?.=
битое это теперь полный класс (я удалилstart_lvl()
иend_lvl()
функцию , чтобы увидеть , если они сделали разницу) - pastebin.com/zfcBxHd8Задумывались ли вы о получении всех пунктов меню навигации с помощью встроенной функции:
wp_get_nav_menu_items();
и выводе содержимого вручную?Пример :: Создание простого списка меню
источник