Php显示所有帖子,而不仅仅是当前类别的帖子

时间:2012-11-27 作者:Dan Dineen

我只是想在默认类别上显示一个分类帖子列表(自定义帖子类型为“project”)。php页面。我不能让它工作!

如果我只使用基本主题类别。php模板我收到一条“无可用帖子”消息,因为它正在寻找具有指定类别的标准WP帖子(但没有)。然而,一旦我尝试让模板使用我的自定义帖子类型,它就会简单地打印出所有项目的列表,无论它们被分配到哪个类别。

我当前的代码如下:

<section>
<?php 
query_posts(array( 
\'post_type\' => \'project\'
 ));  
 ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<article>
    <h2>Project: <?php the_title(); ?></h2>
    <?php the_content(); ?>    
</article>
    <?php endwhile; ?>
</section>
模板应该“知道”默认情况下应该显示的类别。如果我在www.mysite上。co.uk/category/client-x则应仅显示具有“client x”类别的项目。我相信这不会太难!

任何帮助都将不胜感激。

谢谢

1 个回复
SO网友:Chip Bennett

你的问题是你使用query_posts(). Don\'t use query_posts(), ever.

滤器pre_get_posts 相反例如:

function wpse74093_filter_pre_get_posts( $query ) {
    // First, make sure we target only the main query
    if ( is_main_query() ) {
        // Target the category index archive,
        // and only for the category "client-x"
        if ( is_category( \'client-x\' ) ) {
            // Set the post-type to "project"
            $query->set( \'post-type\', \'project\' );
        }
    }
    return $query;
}
add_action( \'pre_get_posts\', \'wpse74093_filter_pre_get_posts\' );
我假设合适的分类术语是client-x, 基于您问题中的类别存档索引URL。如果这不是正确的类别,请酌情更换。

结束