将“CURRENT_POST_ITEM”类添加到循环中的当前POST

时间:2011-04-12 作者:Squrler

我在我的网站侧栏中使用一个循环来显示该类别中的所有帖子。现在,我想在当前帖子中包含一个“current\\u post”类,该类将显示为列表中该项目的样式。

我已尝试查找条件标记或此自定义wp_list_post_types function 但这两种方法都没有奏效。有人知道有没有办法做到这一点吗?

编辑:从下面的注释添加循环

<?php foreach((get_the_category()) as $category) { 
$postcat= $category->cat_ID; 
$catname =$category->cat_name; } 
$args = array( \'cat\' => $postcat ); 
$my_query = new WP_Query(); 
$my_query->query($args); // Equivalent of query_posts()

while($my_query->have_posts()) : $my_query->the_post(); 
$id=get_the_ID();   
$currentClass= ($post->ID == $id) ? "current_post": ""; ?>
<a class="<?php echo   $currentClass; ?>" href="<?php the_permalink();?>">ni</a> 
<?php endwhile; ?>

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

您应该能够获取查询的对象id,并在自定义循环中使用该id进行比较。。

在现有循环代码之前(您在上面发布的内容),但显然是在打开PHP标记之后。。

global $wp_query;
$current_id = $wp_query->get_queried_object_id();
然后在自定义WP循环中的某个地方。。

if( $current_id == get_the_ID() ) {
    // This result is the current one
}
else {
    // Not current
}
希望这有帮助。。

SO网友:Brooke.

如果您使用的是循环,那么您应该能够执行类似的操作,它未经测试,但应该可以工作。侧栏循环

<?php if ( have_posts() ) : while( have_posts() ): the_post(); ?>
<?php while( have_posts() ): the_post(); ?>
<?php while( have_posts() ){ 
 $id=get_the_ID();
 $currentClass= ($post->ID == $id) ? "current_post": ""; ?>
然后
<div class="post <?php echo $currentClass; ?>">.....

这没有经过测试,所以我只是假设$post->ID 将获取外部帖子的IDget_the_ID() 将获取循环内帖子的ID。如果这样不行,你能发布你的循环代码吗?我会做一些测试

EDIT

你的循环有一些问题。一是它只抓住了最后一类。我在谷歌上快速搜索了一下,找到了一个似乎可以在我的测试安装中使用的解决方案here

仅当它们位于单个贴子页面上时才会显示。否则会发生不好的事情(如重复的帖子显示等)

    <ul>
<?php
$IDOutsideLoop = $post->ID;
while( have_posts() ) {
    the_post();
if(is_single()){
    foreach( ( get_the_category() ) as $category )
        $my_query = new WP_Query(\'category_name=\' . $category->category_nicename . \'&orderby=title&order=asc&showposts=100\');
    if( $my_query ) {
        while ( $my_query->have_posts() ) {
            $my_query->the_post(); 
                        $currentClass=( is_single() && $IDOutsideLoop == $post->ID ) ? \' class="current_post"\' : \'\';                    ?>
            <li>
                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" <?php echo $currentClass ?>><?php the_title(); ?></a>
            </li>
<?php
        }
    }
}
}
?>
</ul>

结束

相关推荐

Main Loop未在自定义博客模板页面中启动

我为我页面的博客部分制作了一个自定义模板。我甚至将post page设置为Blog.我创建了一个名为“页面内容”的自定义帖子类型,并在#feature 分区,但未显示主要帖子(写在帖子面板中)(#blog 部门)有什么建议可以解决这个问题吗?编辑:我刚刚在webkit inspector中看到:Fatal error: Cannot use object of type WP_Query as array in /home/alex/www/wpa/wp-includes/query.php on lin