如何在我的自定义帖子类型档案中只显示最近的帖子?

时间:2013-11-23 作者:agis

我已经注册了一个自定义的帖子类型archive-myCPT.php 我只想检索当前发布的帖子。

以下是我的archive-myCPT.php:

<?php 

    if( have_posts() ){
        $x = 1;
        while ( have_posts() ){
            the_post(); 
            if ( 0 === (int) $post->post_parent ) {
                get_template_part( \'inc/post-format/content-debate\');
            }
我尝试添加以下内容:query_posts(\'posts_per_page=1&order=DESC&orderby=date\')if( have_posts() ){ 但是我从默认的博客帖子中得到了最后一篇帖子,而不是从我的CPT中,而且它还添加了分页。

如何检索just 我的CPT中最近发布的没有分页的帖子?

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

您只需使用pre_get_posts().

Code:

function wpse124228_alter_ppp_order_for_mycpt( $query ) {
    if ( ! $query->is_main_query() || is_admin() )
        return;
    if ( is_post_type_archive( \'mycpt\' ) ) {
        //Only display 1 post on mycpt archive
        $query->set( \'posts_per_page\', 1 );
        //Most recent/current
        $query->set( \'orderby\', \'date\' );
        $query->set( \'order\', \'DESC\' );
    }
}
add_action( \'pre_get_posts\', \'wpse124228_alter_ppp_order_for_mycpt\' );
这个很像example 从codex页面。顺便提一下don\'t 使用query_posts(), 如果必须进行第二次查询,请使用WP_Query, 但对于一个不必要的档案来说。

Additional Information:

结束

相关推荐