Я не знаю, почему не генерируются правильные классы для пункта меню — все элементы в дереве, имеющем поддерево, получают только menu-item menu-item-type-post_type
. Элементы, у которых нет дочерних элементов, получают соответствующие классы после нажатия (активны).
Ссылка: http://lichens.ie/
Часть структуры меню: http://imgur.com/5Lj00.png
Код
$args = array(
'menu' => 'Main menu',
'container' => '',
'menu_id' => 'nav',
);
wp_nav_menu($args);
Когда вы посещаете, например, http://lichens.ie/view-lichens-by/lichens-by-habitat/, вы видите, что у него нет «текущего» класса. Как и его родитель.
PS Извините за публикацию «нерабочих ссылок» — это из-за ограничения репутации
Любые идеи — помощь высоко ценится.
Это часть кода
_wp_menu_item_classes_by_context()
, которая обрабатывает текущий класс для страниц:post_type
типовым.is_singular
.Второй пункт можно исключить, т.к. класс CSS для типа элемента сгенерирован корректно. Так что что-то пойдет не так либо с идентификаторами, либо с
is_singular
условными.Вы запускаете какие-либо вторичные циклы на странице? Наиболее распространенной причиной нарушения условий является неправильное использование
query_posts()
.Ты был прав! Удивительно! Это не та тема, которую я подготовил (я просто делаю некоторые модификации, добавляя поддержку меню), и это было ошибкой дополнительных query_posts, которые использовались перед вызовом меню. Большое спасибо! Мне жаль, что я еще не могу проголосовать за ваш ответ
Спасибо за предложение — к счастью, ответ от Rarst решил проблему (неправильное использование дополнительного цикла перед вызовом меню). Я сохраню фрагмент на будущее и проголосую за ваш ответ, когда у меня будет достаточно репутации. Приветствует.
Я не знаю, почему это не работает в вашем случае… Как вы говорите, активная страница должна добавлять «current_menu_item» к своим классам. Если у вас возникли проблемы по той или иной причине, вы всегда можете использовать фильтр nav_menu_css_class, чтобы добавить свои собственные классы. Этот небольшой фрагмент кода по существу дублирует классы current_menu_item и current_menu_parent и добавляет класс has_children (полезно для расширяемых или выпадающих меню):
Конечно, вы хотите выяснить, почему встроенная функциональность не работает для вас, прежде чем что-то взломать, чтобы дублировать ее, но вы можете многое сделать с этим фильтром, если это необходимо…