Проблема очень распространенная. Класс у активного пункта меню пропадает, когда мы проваливаемся в дочерний элемент. Будем исправлять!

WordPress своими алгоритмами создает верстку и классы. Нам надо вмешаться в процесс и подсказать, в каких случаях какие пункты оставлять активными.

Например, мы имеем:

  • Свой тип записей (post_type) portfolio в меню называется «Портфолио» (допустим, id=4);
  • Страница с постами находится в пункте меню «Блог» (допустим, id=1);
  • Если мы находимся в архиве записей (archive) «Портфолио», у нас подсвечивается пункт меню «Блог»;
  • Если мы находимся на подробной странице (single) типа «Портфолио», у нас подсвечивается пункт меню «Блог»;

Нужно исправить:

  • Если мы в архиве (archive) или на подробной записи (single) типа «Портфолио», то надо убрать подсветку пункта меню «Блог» (id=1, напомню);
  • Подсвечиваем пункт меню «Портфолио» (id=4), если мы в архиве записей этого типа, или на странице записи (single).

Решение:

Код (разумеется, добавляем его в functions.php) будет запускаться при формировании связей пункта меню ($item) и принадлежащих ему классов ($classes).

В первом случае мы убираем из массива с классами тот, который нам не нужен.

Во втором случае мы добавляем пункт «current_page_parent» в массив.

Оформляем стиль активного пункта на основе класса «current_page_parent».

На основе этого кода можно написать любую логику, которая подходит для вашего проекта. Например, если нужно подсвечивать элементы категорий, меток, других таксономий, произвольных типов записей, подсветка вложенности страниц и все в таком духе.

Пользуйтесь на здоровье и не теряйте времени на мелочи!

 

 

Оставить комментарий