Добавление класса "current_page_item" для меню пользовательского типа записи
Я использую следующий код для вывода списка записей пользовательского типа:
$args = array(
'post_type'=>'portfolio', // Тип записи - портфолио
'title_li'=> __('Portfolio') // Заголовок списка
);
wp_list_pages( $args );
Однако класс не добавляется к текущему элементу списка (current_page_item
). Есть идеи, как это можно исправить?

Проверьте этот тикет: http://core.trac.wordpress.org/ticket/17590
Быстрое исправление от husobj:
function my_page_css_class( $css_class, $page ) {
global $post;
if ( $post->ID == $page->ID ) {
$css_class[] = 'current_page_item';
}
return $css_class;
}
add_filter( 'page_css_class', 'my_page_css_class', 10, 2 );
Возможно, это быстрое исправление будет более простой альтернативой? Удачи!

Нашёл это, и отлично работает!
Динамическая навигация для произвольного типа записи (страницы)

Вы можете использовать этот код, чтобы сделать родительский тип записи активным в меню:
<?php
add_action('nav_menu_css_class', 'add_current_nav_class', 10, 2 );
function add_current_nav_class($classes, $item) {
// Получаем данные текущей записи
global $post;
// Получаем тип текущей записи
$current_post_type = get_post_type_object(get_post_type($post->ID));
$current_post_type_slug = $current_post_type->rewrite[slug];
// Получаем URL пункта меню
$menu_slug = strtolower(trim($item->url));
// Если URL пункта меню содержит slug типа текущей записи, добавляем класс current-menu-item
if (strpos($menu_slug,$current_post_type_slug) !== false) {
$classes[] = 'current-menu-item';
}
// Возвращаем исправленный набор классов для добавления к пункту меню
return $classes;
}
?>
Я нашел этот код в этом Gist, и он сработал для меня - он помечает родительскую навигацию как активную, когда находишься на странице отдельной записи пользовательского типа.

Хочу поделиться обходным решением, которое сработало в моей ситуации.
У меня был пользовательский тип записи (Custom Post Type) с пользовательской таксономией (Custom Taxonomy), и я хотел вывести список этих записей только если они принадлежат к определенной пользовательской категории — с классом текущей страницы на элементе li
.
Приведенный выше код*
выводил список всех записей, но не фильтровал по категориям.
*
[примечание редактора] Порядок ответов может меняться, неясно, на какой именно код идет ссылка.
Мое решение основано на этом коде, не уверен, что это лучшая практика, но оно работает...
<?php
// получаем ID текущей страницы/записи
$pageID = get_the_ID();
query_posts( array( 'post_type' => 'developments', 'custom_cat' => 'current' ) );
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
// проверяем, совпадает ли ID текущей страницы/записи
if ( $post->ID == $pageID ) {
$class = 'current_page_item';
} else {
$class = '';
}
?>
<li <?php if ($class != '') echo 'class="'.$class.'"'; ?>>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
endif;
wp_reset_query();
?>

Вам необходимо добавить это в файл functions.php:
function kct_page_css_class( $css_class, $page, $depth, $args, $current_page ) {
if ( !isset($args['post_type']) || !is_singular($args['post_type']) )
return $css_class;
global $post;
$current_page = $post->ID;
$_current_page = $post;
_get_post_ancestors($_current_page);
if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
$css_class[] = 'current_page_ancestor';
if ( $page->ID == $current_page )
$css_class[] = 'current_page_item';
elseif ( $_current_page && $page->ID == $_current_page->post_parent )
$css_class[] = 'current_page_parent';
return $css_class;
}
add_filter( 'page_css_class', 'kct_page_css_class', 10, 5 );
Источник: http://kucrut.org/wp_list_pages-for-custom-post-types/

if(site_url()."/".get_post_type() == $menu_item->url || site_url()."/".$post->post_name == $menu_item->url){#ДЕЙСТВИЯ ДЛЯ ОПРЕДЕЛЕНИЯ НА ФРОНТЕНДЕ}
помогает мне добавить класс активного пункта меню к текущему элементу меню при ПЕРЕБОРЕ wp_get_nav_menu_items
как foreach($primary_nav_menu_items as $n => $menu_item){#сделать что-то}
. Может быть полезно кому-то.
