修改档案查询会影响显示帖子计数功能

时间:2015-07-01 作者:worldwildwebdev

我正在尝试修改存档页面的存档查询,此功能连接到pre_get_posts 行动挂钩。

// Load our function when hook is set
add_action( \'pre_get_posts\', \'rc_modify_query_limit_posts\' );
function rc_modify_query_limit_posts( $query ) {

// Check if on frontend and main query is modified
if( ! is_admin() && $query->is_main_query() && $query->is_archive() ) {

    $query->set(\'posts_per_page\', \'9\');

}
这工作很好,但不知怎么搞砸了我显示当前帖子的功能”

function archive_post_count() {

    global $wp_query;
    $showing = \'\';

    if ( $wp_query->found_posts > 1 ) {

        $page_number = is_paged() ? $wp_query->query_vars[\'paged\'] : 1;
        $current_max = ( get_option( \'posts_per_page\' ) * ( $page_number - 1 ) ) + $wp_query->post_count;
        $current_min = $current_max - $wp_query->post_count + 1;

        $range   = ( $current_min == $current_max ) ? strval( $current_min ) : $current_min . \'-\' . $current_max;
        $total   = $wp_query->found_posts;

        $showing = \'Shown \' . $range . \' from \' . $total . \' posts \';

    }

    echo $showing;

}
目前我有11篇帖子,在第一页上一切正常。但当我点击第2页时,“从11篇帖子中显示11-12”信息就会显示出来。我的错在哪里?

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

pre_get_posts 不会明确更改posts_per_page, 该值与后端在读数设置下设置的值保持不变。pre_get_posts 仅在内置SQL查询之前更改此值WP_Query 就在主查询运行之前。

如果您需要在使用pre_get_posts, 访问将保存由设置的新值的查询变量pre_get_posts. (NOTE: query_posts 断开主查询对象,因此如果使用query_posts 在页面的某个地方,这也会失败,因为您将获得不正确的值。这是ONE BIG REASON 为什么你永远不应该使用query_postsan answer that explains this in detail.)

而不是使用

get_option( \'posts_per_page\' );
使用

$wp_query->query_vars[\'posts_per_page\'];

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post