在页面上显示特定类别的所有帖子

时间:2013-01-02 作者:mybecks

我想在一个页面上显示特定类别的所有帖子。因此,我编辑了页面。我的主题文件夹中的php文件。我添加了一个“if子句”来检查当前显示的页面,并加载以下类别的所有帖子。

<?php get_header(); ?>

<div id="primary">
    <div id="content" role="main">

<?php
    if (is_page(26)) {
        query_posts(\'cat=2,6,9,13&showposts=-1&orderby=date\');    
        if (have_posts()) : 
            while (have_posts()) : 
                the_post(); 
                get_template_part( \'content\', \'page\' );
            endwhile; 
        endif;  
    } else {
        while ( have_posts() ) : 
            the_post(); 
            get_template_part( \'content\', \'page\' ); 
        endwhile; // end of the loop. 
    }
?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php get_footer(); ?>
但当我加载第26页时,将不会显示任何内容。

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

我建议在数组中添加类别的arg。不要使用query_posts.而且showposts 不推荐使用posts_per_page 相反

$args = array (
    \'cat\' => array(2,6,9,13),
    \'posts_per_page\' => -1, //showposts is deprecated
    \'orderby\' => \'date\' //You can specify more filters to get the data 
);

$cat_posts = new WP_query($args);

if ($cat_posts->have_posts()) : while ($cat_posts->have_posts()) : $cat_posts->the_post();
        get_template_part( \'content\', \'page\' );
endwhile; endif;

SO网友:fuxia

发生这种情况是因为您仍在使用query_posts(). Stop doing that. 使用WP_Query 而是:

$extra_posts = new WP_Query( \'cat=2,6,9,13&showposts=-1&orderby=date\' );
if ( $extra_posts->have_posts() )
{
    while( $extra_posts->have_posts() )
    {
        $extra_posts->the_post();
        get_template_part( \'content\', \'page\' );
    }
    wp_reset_postdata();
}

结束

相关推荐

Limit Loop to 5 Posts?

这是我当前的循环:<?php if ( ! empty ( $GLOBALS[\'post\'] ) && is_single() && in_category( \'movies\', $GLOBALS[\'post\'] ) ) : $movies = new Wp_Query(\'tag=movie-reviews\'); while ( $movies->have_posts() ) : $movies->the_post