Intereting Posts
Поместите категории и теги в раскрывающийся список, Категории как параметры и теги в качестве групп опций Использовать выбор гиперссылки TinyMCE за пределами TinyMCE jQuery не работает в моем php-фрагменте Как загрузить несколько изображений в интерфейсе в галерею ACF с помощью update_field Как остановить запуск PHP-кода в дочерней теме Как добавить редактируемые / динамические значения в раскрывающееся меню Meta Box Как я могу запросить все сообщения с термином таксономии потока? Авторы должны иметь доступ только к домашней странице Перенаправить URL подстраницы на родителя без изменения URL-адреса Как / где заполняется глобальная переменная $ wp_registered_widgets? Пользовательский тип сообщения / таксономия Slug / Post Title с архивом типа сообщения Использовать почтовые форматы только для определенного типа сообщений? WordPress взломан? Сообщения не найдены в панели управления Создание настраиваемых URL-адресов с шаблоном для извлечения внешнего JSON Создание пользовательской страницы типа архива с дополнительными категориями Навигация боковой панели

Отредактируйте (автоматический) формат HTML навигационных меню

Я зарегистрировал свое меню в functions.php, вызвав его из header.php и установив его в бэкэнд Appearances> Menus. Проблема в том, что мне нужно вручную вставить div, окружающий <ul class="sub-menu"> ... </ul> где находится мое раскрывающееся меню.

Нет никакого способа обойти это, как добавление класса div к ul и т. Д., Так как для того, чтобы его выпадающая функциональность работала, он должен быть вставлен таким образом, так что мой код может быть:

 <div class="dropdown"> <ul class="sub-menu"> <li> <a href="#">Menu Item</a> </li> </ul> </div> 

Есть ли простой способ легко получить эту <div class="dropdown"> и </div> часть? Или единственный способ – написать сценарий?

Спасибо!

Обновление: на самом деле вопрос заключался в том, как обернуть подменю, а не все меню. Вот два варианта:

используя jQuery:

 <script type="text/javascript"> // run this before the script that sets up the dropdowns: jQuery(document.ready(function($){ $('.sub-menu').wrap('<div class="dropdown"></div>'); }) </script> 

используя PHP 5.3+ (немного более сложный вариант, но я думал, что его опубликую):

 <?php $dom = DOMDocument::loadHTML(wp_nav_menu(array( 'menu' => 'main', // change this to your theme location 'echo' => false, ))); // Find all uls $uls = $dom->getElementsByTagName('ul'); // Find & wrap each sub menu foreach ($uls AS $ul) { if ($ul->getAttribute('class') == 'sub-menu') { // create the dropdown wrapper div $wrapper = $dom->createElement('div'); $wrapper->setAttribute('class', 'dropdown'); // Replace ul with this wrapper div $ul->parentNode->replaceChild($wrapper, $ul); // Append this ul to wrapper div $wrapper->appendChild($ul); } } echo $dom->saveHTML($dom->getElementsByTagName('div')->item(0)); ?> 

// СТАРЫЙ ОТВЕТ:

Проверьте параметр container_class wp_nav_menu() : http://codex.wordpress.org/Function_Reference/wp_nav_menu

Ваше меню ul автоматически будет завернуто в div; вы можете установить класс div с помощью этой опции:

 <?php wp_nav_menu(array( 'theme_location' => 'my_location', // change this to your theme location 'container_class' => 'dropdown', )); ?> 

Я не знаю, что-то не хватает, но я понимаю, что вам нужно, так просто:

 <div class="dropdown"> <div class="whatever"> <?php wp_nav_menu(array( 'theme_location' => 'my_location', // change this to your theme location 'container_class' => 'dropdown', )); ?> </div> </div> 

но опять же, не уверен, понимаю ли я ваш вопрос