不同的WP_Query中不同的posts_per_page自定义帖子类型的数量

时间:2014-03-04 10:14:37

标签: wordpress custom-post-type

我有一个自定义的帖子类型'组合'和不同的WP_Query用于不同的自定义帖子页面和目的。

对于投资组合页面,我想选择12个投资组合类型的posts_per_page。

对于主页面,我想选择8个投资组合类型的posts_per_page。

对于单个工作页面上的块类似作品我想选择4个投资组合类型的posts_per_page。

目前在所有wp_query中,我有一个var $ posts_per_page这个号码。但它不起作用,因为我在functions.php中添加了一个函数,用于定义每页默认的自定义组合帖子值。它是8.所以现在我在所有查询中每页有8个帖子。我添加此功能的原因是为了使分页工作。那个功能:

function portfolio_posts_per_page( $query ) {
   if ( $query->query_vars['post_type'] == 'portfolio' )  $query->query_vars['posts_per_page'] = 8;
   return $query;
}
if ( !is_admin() ) add_filter( 'pre_get_posts', 'portfolio_posts_per_page' );

我应该删除此功能并将Wordpress管理面板中的每页博客帖子更改为1吗?就像以前一样。或者是否有另一个解决此问题的方法?

更新

我试图将功能更改为此功能,但然后wordpress根本不起作用:

function portfolio_posts_per_page( $query ) {

if ( $query->query_vars['post_type'] == 'portfolio' ) {

        if ( is_post_type_archive('portfolio') 
            $query->query_vars['posts_per_page'] = 12;
        }
        elseif (is_front_page()) {
            $query->query_vars['posts_per_page'] = 8;
        }
        elseif ( is_singular( 'portfolio' ) ) {
            $query->query_vars['posts_per_page'] = 4;
        }
        else {
            $query->query_vars['posts_per_page'] = 4;
        }
}       
return $query;
}

1 个答案:

答案 0 :(得分:0)

对于每种自定义帖子类型,模板文件都使用自定义查询;例如,如果您有一个名为archive-portfolio的自定义模板,那么在该文件中使用类似的内容:

$args = array( 'post_type' => 'portfolio', 'posts_per_page' => 8 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
    the_title();
    echo '<div class="entry-content">';
        the_content();
    echo '</div>';
endwhile;

这只是一个示例,同样地,您将另一个模板文件用于另一个自定义帖子类型并使用完全不同的参数。对于主页上的主要查询,您可以在WordPress backend上进行设置。详细了解Codex

更新:点击this answer of mine查看pre_get_posts