Intereting Posts
Как получить URL-адрес в панели управления для пользовательского типа сообщений? Сайт WordPress, занесенный в черный список от Google .htaccess Перенаправление при нажатии «ответ» в разделе комментариев Файлы WXR xml импортируются как файлы TXT и отображаются в разделе «Медиа», Как использовать первый тег в постоянных ссылках Как я могу сделать вывод wp_list_categories li с классом-slug как класс для своих детей? Добавить дополнительные параметры после permalink? Проблемы с входами в многопользовательскую установку с разными доменами Разделение результатов поиска по типу сообщения Использовать персонализированную мета-запись в постоянной ссылке Функция короткого кода не работает Yoast SEO-крючки переопределяют себя Относительные ссылки для производительности? Предупреждение REST при публикации или обновлении публикации в WordPress Страницы, ориентированные на местоположение, отображающие результаты, близкие к клиенту

Вставьте div перед wp_nav_menu

Как я могу вставить пользовательский div до того, как wp_nav_menu () добавит ul?

Проблема в том, что скрипт вставляет мою кнопку «div menu» после nav ul вместо нее.

Я пытаюсь сделать это с помощью функции, потому что основная идея заключается в том, что в некоторых моих меню мне нужно вставить div с кнопкой «меню», чтобы пользователи нажимали кнопку, чтобы запустить раскрывающийся список.

* Мне пришлось изменить код ниже, потому что редактор продолжает удалять мой код div. Достаточно сказать, что я использую надлежащее открытие и закрытие div

Вот ссылка на «правильный» код, поскольку я не могу представить редактор в стеке. https://gist.github.com/3120416

function tumble_menu( $args = array() ) { /* Default arguments */ $defaults = array( 'container' => 'ul', 'menu_class' => 'nav', 'menu_id' => 'top_nav', 'theme_location' => 'top-menu', 'echo' => true, 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'depth' => 1, 'sort_column' => 'menu_order', 'walker' => '' ); $defaults = apply_filters( 'tumble_nav_default_args', $defaults); $args = wp_parse_args( $args, $defaults ); 

 $main_menu = wp_nav_menu( $args ); 

} function tumble_add_menu_wrapper ($ html, $ begin, $ end) {// оберните наш оригинальный HTML новыми тегами $ html = $ begin. $ html. $ Конец; return $ html; } add_filter ('tumble_menu_wrap', 'tumble_add_menu_wrapper', 10, 3); function tumble_do_menu_wrapper () {$ html = tumble_menu (); echo apply_filters ('tumble_menu_wrap', $ html, 'div class = "menu-button"> Menu / div>', ''); }

Обновление Мой вопрос был немного запутанным. Я не пытался обернуть навигацию в элементе div, а попытался вставить автономный div до вывода навигационного элемента ul.

Как-то функция wp_nav_menu () не допускает этого. Если я использую вместо этого «стандартный» html-элемент, то моя оберточная функция работает отлично. Я хотел бы узнать когда-нибудь, почему эта простая php-логика работает, но не с wp_nav_menu (), но я полагаю, что это вопрос на другой день.

Спасибо Чип за информацию!

Solutions Collecting From Web of "Вставьте div перед wp_nav_menu"

Как я могу вставить пользовательский div до того, как wp_nav_menu () добавит ul?

Вот что определяет ключ массива 'container' : элемент, содержащий меню.

Меню всегда будет выводиться как <ul> , завернутое в контейнер типа, указанного ключом массива 'container' : либо <div> (по умолчанию), передавая 'div' ; <nav> , передавая 'nav' ; или нет, путем передачи false .

Итак, если вы хотите обернуть свое навигационное меню в <div class="menu-button"> , используйте следующие аргументы массива:

 array( 'container' => 'div', 'container_class' => 'menu-button' ) 

(Хотя, опять же, 'div' является значением по умолчанию, поэтому вы можете его опустить, если хотите.)

Вот решение. Подставки к Сергею Бирюкову

Изменения потребовали превращения эха в false и добавления в return $ main_menu.

 function tumble_menu ($ args = array ()) {
     / * Аргументы по умолчанию * /
     $ defaults = массив (
         'container' => 'ul',
         'menu_class' => 'nav',
         'menu_id' => 'main_menu',
         'theme_location' => 'главное меню',
         'echo' => false,
         'before' => '',
         'after' => '',
         'link_before' => '',
         'link_after' => '',
         'depth' => 1,
         'sort_column' => 'menu_order',
         'show_container' => false,
         'walker' => '',
         );
     $ defaults = apply_filters ('tumble_nav_default_args', $ defaults);
     $ args = wp_parse_args ($ args, $ defaults);
     $ main_menu = wp_nav_menu ($ args);
     return $ main_menu;
 }
 function tumble_add_menu_wrapper ($ nav_menu, $ begin, $ end) {
     // оберните наш оригинальный HTML новыми тегами
     return $ begin.  $ nav_menu.  $ Конец;
 }

 add_filter ('tumble_menu_wrap', 'tumble_add_menu_wrapper', 10, 3);

 function tumble_do_menu_wrapper () {
     $ html = tumble_menu ();
     echo apply_filters ('tumble_menu_wrap', $ html, 'div class = "menu-button"> Menu / div>', '');
 }