RetroiMe
@RetroiMe

Почему WordPress не видит последовательности в страницах?

Добрый день!

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

Проблема следующая.
Скажем, есть у нас навигация по страницам. На страницу "блог" выводятся записи, и эту страницу движок отмечает в меню, как активную (current). Если мы углубляемся дальше - в запись, то он теряет логическую связь с родительской страницей ("блог").

Что самое интересное - "хлебные крошки" отслеживают все нормально.

Подскажите, пожалуйста, как это исправить?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. Хлебные крошки - это произвольный код, а не родная функция / фича WP, она видимо изначально делалась с учетом этого.
2. WordPress отслеживает в меню именно текущую страницу. Страница "Блог" не является текущей, если вы находитесь на странице одного поста. Текущей является, как ни странно, страница этого поста, а ее в меню нет. То есть, исправлять там нечего - WP делает ровно то, что и должен делать, и ровно так, как это и должно делаться. Впрочем, если вы хотите подсвечивать родительский пункт меню (в данном случае - "Блог", если находитесь на страницах, относящихся к блогу), это решаемо с помощью фильтра:
function add_custom_class( $classes=array(), $menu_item=false ) {

    if ( ! is_page() && 'Blog' == $menu_item->title && ! in_array( 'current-menu-item', $classes ) ) {
        $classes[] = 'current-menu-item';        
    }                    

    return $classes;
}
add_filter( 'nav_menu_css_class', 'add_custom_class', 100, 2 );

Здесь Blog - это название вашей страницы, назначенной для блога. Если у вас другое название - вводите его.
Вот еще полезная статья.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Добрый.

Страница "Блог" выбрана в Настройках как "Страница записей"? По идеи, при переходе на страницу записи пункту "Блог" должен присваиваться класс "current_page_parent". Для этого класса можно присвоить стили аналогично классу "current-menu-item".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы