为自定义帖子类型菜单添加类“CURRENT_PAGE_ITEM”

时间:2011-01-04 作者:Red

我使用以下内容来帮助显示在自定义帖子类型中创建的帖子列表。

$args = array(
  \'post_type\'=>\'portfolio\',
  \'title_li\'=> __(\'Portfolio\')
);
wp_list_pages( $args ); 
但是,没有将类添加到当前页面的列表项中(current_page_item). 你知道我该怎么做吗?

6 个回复
最合适的回答,由SO网友:Red 整理而成

找到了这个,它工作得很好!

Dynamic navigation for custom post type (pages)

SO网友:lepardman

检查此票据: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 );
快速修复可能是一种更简单的选择?干杯

SO网友:Jatinder Kaur

您可以使用此代码在菜单中激活父帖子类型:

<?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;

}

?>
我找到了这个代码in this Gist 它对我很有用——当在自定义帖子类型的单篇帖子上时,它会将父导航标记为活动的。

SO网友:FLOQ Design

我想添加一个适合我的解决方案。

我有自定义分类法的自定义帖子类型,并希望列出这些帖子,只要它们位于特定的自定义类别中—当前页面类位于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(); 
?>

SO网友:bryceadams

您需要将其添加到函数中。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 );
Via公司http://kucrut.org/wp_list_pages-for-custom-post-types/

SO网友:Vishal Kumar Sahu

if(site_url()."/".get_post_type() == $menu_item->url || site_url()."/".$post->post_name == $menu_item->url){#STUFF TO IDENTIFY ON FRONT}
在循环时帮助我将当前活动的类添加到当前菜单项wp_get_nav_menu_itemsforeach($primary_nav_menu_items as $n => $menu_item){#do something} . 它可能会帮助某人。

结束

相关推荐