Intereting Posts
Отображение данных таблицы на странице Страницы перенаправляют меня на главную страницу Шаблон пользовательской страницы WordPress в другом каталоге Будет ли использование дочерней темы создавать проблемы с параметрами коммерческой родительской темы? Как установить две разные темы на одном WordPress? (Desktop vs. Mobile) Создать страницу как файл в моей теме? как загружать контент как всплывающее, используя ajax Написал плагин WP Cron, и он вызывает фатальную ошибку при активации Добавление настраиваемого поля в файл__контента () Включить шаблон главной страницы в шаблон определенной категории. Как управлять существующими страницами опций (options-media.php) Codex: Database Описание: значение кардинальности Скрыть виджет для незарегистрированных пользователей без плагина (functions.php) Создание настраиваемого клика для моего плагина Добавить класс в другие сообщения, используя get_posts

start_lvl игнорируется в пользовательском walker_nav_menu

Это мой первый проект с участием 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, если это помогает.

Заранее спасибо,

Феликс 🙂

Solutions Collecting From Web of "start_lvl игнорируется в пользовательском walker_nav_menu"

Класс my_extended_walker в порядке, но когда вы вызываете функцию wp_nav_menu, используйте параметр items_wrap .

 wp_nav_menu( array( 'items_wrap' => '<p>%3$s</p>', 'walker'=>new my_extended_walker() ) ); 

Start_lvl используется для дочерних элементов.

Хорошо, не уверен, что я читал неправильно, когда я разместил это, но весь ваш класс должен быть примерно таким:

 class my_extended_walker extends Walker_Nav_Menu { 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"; } } 

И затем передайте «walker» в качестве параметра, когда вы вызываете wp_nav_menu

wp_nav_menu( array( 'walker'=>new my_extended_walker() ) );

Если у вас есть это, все должно быть в порядке. Я смотрю на рабочий код, который делает именно это. Однако я не знаю о размещении тегов <p> . Вы можете получить недопустимую разметку.

Задумывались ли вы о выборе всех элементов меню навигации с помощью встроенной функции: wp_get_nav_menu_items(); и вручную выводить содержимое?

Пример :: Создание простого списка меню

  // Get the nav menu based on $menu_name (same as 'theme_location' or 'menu' arg to wp_nav_menu) // This code based on wp_nav_menu's code to get Menu ID from menu slug $menu_name = 'custom_menu_slug'; if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) { $menu = wp_get_nav_menu_object( $locations[ $menu_name ] ); $menu_items = wp_get_nav_menu_items($menu->term_id); $menu_list = '<ul id="menu-' . $menu_name . '">'; foreach ( (array) $menu_items as $key => $menu_item ) { $title = $menu_item->title; $url = $menu_item->url; $menu_list .= '<li><a href="' . $url . '">' . $title . '</a></li>'; } $menu_list .= '</ul>'; } else { $menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>'; } // $menu_list now ready to output