Добавление класса «current_page_item» для пользовательского меню типа сообщения

Для отображения списка сообщений, созданных в настраиваемом типе сообщений, я использую следующее.

$args = array( 'post_type'=>'portfolio', 'title_li'=> __('Portfolio') ); wp_list_pages( $args ); 

Однако класс не добавляется в элемент списка текущей страницы ( current_page_item ). Любые идеи о том, как я могу это сделать?

Solutions Collecting From Web of "Добавление класса «current_page_item» для пользовательского меню типа сообщения"

Проверьте этот билет: http://core.trac.wordpress.org/ticket/17590

Quickfix от 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:

 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/

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

У меня был Custom Post Type с пользовательской таксономией, и я хотел бы перечислить эти сообщения, пока они были в определенной пользовательской категории, – с текущим классом страницы в li .

Код выше * составил список всех сообщений, но не отфильтровал категории.
* [примечание редактора] Ответы могут отличаться в зависимости от того, какой код передается.

Мое решение исходит из этого кода, не уверен, что это лучшая практика, но он работает.

 <?php // get current page/post ID $pageID = get_the_ID(); query_posts( array( 'post_type' => 'developments', 'custom_cat' => 'current' ) ); if ( have_posts() ) : while ( have_posts() ) : the_post(); // test if current page/post ID matches 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(); ?> 

Вы можете использовать этот код, чтобы активировать родительский тип сообщения в меню:

 <?php add_action('nav_menu_css_class', 'add_current_nav_class', 10, 2 ); function add_current_nav_class($classes, $item) { // Getting the current post details global $post; // Getting the post type of the current post $current_post_type = get_post_type_object(get_post_type($post->ID)); $current_post_type_slug = $current_post_type->rewrite[slug]; // Getting the URL of the menu item $menu_slug = strtolower(trim($item->url)); // If the menu item URL contains the current post types slug add the current-menu-item class if (strpos($menu_slug,$current_post_type_slug) !== false) { $classes[] = 'current-menu-item'; } // Return the corrected set of classes to be added to the menu item return $classes; } ?> 

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

 if(site_url()."/".get_post_type() == $menu_item->url || site_url()."/".$post->post_name == $menu_item->url){#STUFF TO IDENTIFY ON FRONT} 

помогает мне добавить текущий активный класс к текущему пункту меню, когда я LOOP wp_get_nav_menu_items как foreach($primary_nav_menu_items as $n => $menu_item){#do something} . Это может помочь кому-то.