возможно ли это без взлома javascript? так:
<ul class="my_menu">
<li class="first"> ... </li>
<li> ... </li>
<li> ... </li>
<li class"with_sub"> ...
<ul class="my_menu_sub">
<li class="first"> ... </li>
<li> ... </li>
<li> ... </li>
<li class="last"> ... </li>
</ul>
</li>
<li> ... </li>
<li> ... </li>
<li class="last"> ... </li>
</ul>
что не так с использованием javascript? это основная функциональность, для которой они предназначены? Или это можно рассматривать как прогрессивное улучшение?
Красиво и просто. Мне это нравится!
Я вижу, что этот код работает для пользовательских навигационных меню (я видел, что он работает в пользовательском виджете меню), но он не работает в том же меню, которое используется в основной навигационной панели (проверено в Twenty Eleven). Должно ли это быть? или это будет другой код? или просто другой фильтр? Спасибо!
Это будет работать для одноуровневого меню, но не для более сложного, потому что на данный момент это массив со всеми элементами, а не элементами верхнего уровня.
именно то, что я искал. Благодарю. удивительно, что wp_nav_menu не делает этого автоматически
Я согласен. Я полагаю, что какое-то время в системе отслеживания ошибок WordPress был запрос функции, но из этого ничего не вышло. По крайней мере, существуют соответствующие фильтры, чтобы мы могли добавить эти классы ;).
Спасибо. Искал счетчик, который можно было бы использовать в ходунке меню. ваш ответ позволяет это. Просто добавил $item->number = $i; и получил его в ходунках. Спасибо!!!
Это был бы выход, просто откройте экран меню навигации в админке и добавьте класс к первому и последнему элементам. Конечно, если пользователь перемещает эти пункты меню, классы должны быть переназначены, но я считаю, что это наиболее правильный/лучший ответ (потому что кодирование не требуется).
Я использую это, потому что last-child теперь поддерживается и IE 9, и меня больше не волнуют, т.е. 8, 7..
Это будет первым
<li>
в каждом ненумерованном списке на сайте, а не только в меню. Это также по существу идентично этому ответу wordpress.stackexchange.com/a/63128/9844Извините, псевдокод.
только в IE9 и выше, что исключает почти все, что я делаю 🙂
Лучший и простой подход:
Вот грубый фрагмент, который заботится об изменении вывода меню и добавлении первого/последнего к первому и последнему классу (внешний
ul
не применяется на этом этапе, поэтому не учитывается). Примечание. Требуется PHP5 дляstrripos()
Я немного застрял в том, как заставить его обрабатывать вложенные списки, но, по крайней мере, это должно помочь вам начать.
Вот функция для добавления только первого/последнего классов в пункты родительского меню. Для большинства стилей CSS это все, что необходимо.
Узнайте больше о новом API меню в WordPress 3. Вы можете вручную присвоить любому элементу собственный класс. Кроме того, после освоения это делает редактирование меню удовольствием.
Если у вас есть вложенные меню
Мне нравится простота ответа Исмаэля, но его должно быть больше, если вам нужны классы подменю.
Если вам не нужна поддержка IE8 или ниже, не забывайте, что вы также можете использовать чистый CSS:
Браузерная поддержка jQuery даже лучше, но похоже, что вы пытаетесь этого избежать.
Вот лучший код для добавления первого и последнего классов элементов меню, который включает поддержку вложенных подменю.
Вы можете найти суть здесь и соответствующий учебник здесь.
Как насчет:
и, возможно, некоторые http://selectivizr.com/
Чистый CSS, у меня работает. Это также будет работать с подменю