如何限制WordPress上显示的帖子

时间:2013-03-11 作者:Adam Scot

我应该如何编辑以下代码,以便只回显其中的2篇帖子,而不是3篇

   <?php

                            global $more; $more = false; # some wordpress wtf logic

                            $num_of_posts = $wp_query->post_count;

                            $current = -1;

                                $cat_id = get_cat_ID(single_cat_title(\'\', false));
                                if(!empty($cat_id))
                                {
                                    $query_string.= \'&cat=\'.$cat_id;
                                }

                            query_posts($query_string);

                            if (have_posts()) : while (have_posts()) : the_post(); $current++


                        ?> 

                            <?php if($current == 0) { ?>

3 个回复
SO网友:tfrommen

你只需要检查/统计一下你已经处理了多少个帖子。

$num_post = 1;
while ( have_posts() && ($num_post++ < 3) ) : ...

SO网友:kaiser

这个WP_Query 类有几个方法将各种信息推送到结果$wp_query 对象:

  • $wp_query->found_posts 显示帖子总数$wp_query->numberposts 相同,但已弃用(仍然有效)
  • $wp_query->posts_per_page 如果有分页查询,可以查看每页要显示的数量$wp_query->current_post 当前是否通过post循环,因此如果要中止,只需

    if ( 3 < $wp_query->current_post )
        break;
    
    停止循环的其余部分。

SO网友:kaiser

另一种选择是使用post_limits filter. 下面的示例总结为mini-plugin或mu-plugin。

<?php
/* Plugin Name: (#90428) Posts Limit */
add_filter( \'post_limits\', \'wpse90428_post_limits\' );
function wpse90428_post_limits( $limit )
{
    if ( is_archive() )
        return \'LIMIT 0, 2\';

    return $limit;
}
你还可以更进一步,在parse_request (更早)或pre_get_posts 滤器

<?php
/* Plugin Name: (#90428) Posts Limit */
add_filter( \'parse_requests\', \'wpse90428_post_limits\' );
function wpse90428_post_limits( $query )
{
    if ( $query->is_archive() )
        $query->set( \'posts_per_page\', 3 );

    return $query;
}
你只需要根据自己的需要调整一下。

结束

相关推荐

Query_Posts()与Get_Posts()多个循环

我有一个模板,最初只有一个循环,它使用query\\u posts,我使用相同的方法又添加了两个循环,但是在阅读了allot关于这些的内容后,我得出结论,我将停止使用它,每个人都反对使用它。original query_posts loop (latest posts)<?php if ( !is_front_page() && tfuse_options(PREFIX.\'_pagination_portfolio\') ){ $cat = get_query_va