Intereting Posts
Отфильтровать только текст в папке Отсортировать все сообщения по названию категории в панели администратора? Использовать класс меню в функции walker Страница поиска: активируйте html-код, если тег находится на странице не могут видеть обновленные данные в реальном времени Как я могу предоставить правильный класс тела CPT? Нужна помощь с пользовательскими типами сообщений и таксономиями Как получить изображение EXIF ​​date / time и использовать его для даты / времени публикации WP сложное ограничение элементов в медиа-библиотеке Изображения, которые не отображаются в блоге the_content () продолжает повторяться Как я могу установить и обновить значение the_date в соответствии с настраиваемым полем сообщения esc_html __ () и __ () не работают в массивах Что такое сингулярный.php? Термины массива налоговых запросов отображаются не в порядке

Выделите еще один элемент навигации

Я использую WordPress для разработки сайта галереи изображений. У меня есть альбомы и галереи, с разными permalinks … http://url.com/albums и http://url.com/gallery , но только альбомы появляются в основной навигации.

Код для моей навигации выглядит так:

 <div id="nav"> <ul> <?php wp_list_pages("title_li="); ?> </ul> </div> 

Поскольку я использую wp_list_pages() , текущая страница, на которой вы находитесь, получает класс current_page_item добавленный в тег li .

Страница галереи не является частью основной навигации, поэтому, когда кто-то просматривает одну из страниц галереи, в основной навигации ничего не выделяется.

Я хотел бы выделить страницу альбома в основной навигации, когда кто-то просматривает страницу галереи. Поскольку каждая галерея находится в альбоме, имеет смысл выделить эту страницу.

Может кто-то указать мне верное направление?

Благодаря,
мистифицировать

Фильтр page_css_class позволяет изменять классы, которые получает каждый элемент меню.

Здесь мы проверяем, просматриваем ли мы в настоящее время особый envira сообщения envira а пункт меню – это gallery . В этом случае мы добавляем класс к массиву классов по умолчанию, переданных функции.

 function wpd_page_css_class( $css_class, $page ){ if( is_singular( 'envira' ) && 'albums' == $page->post_name ){ $css_class[] = 'current_page_item'; } return $css_class; } add_filter( 'page_css_class', 'wpd_page_css_class', 10, 2 ); 

После некоторых разговоров я нашел свой ответ здесь: https://forum.jquery.com/topic/jquery-addclass-to-containing-li-based-on-a-href-contents из Przemek (4-й комментарий).

Все, что я сделал, это убедиться, что код выполняется только на странице галереи:

 <?php if ( is_singular("envira") ) { ?> <script> $(function() { $('li.page_item').find('a[href*="/albums/"]').parent().addClass('current_page_item'); }); </script> <?php } ?> 

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

Благодаря,
мистифицировать