WP_Query偏移不起作用

时间:2013-12-01 21:19:41

标签: wordpress

我为自定义帖子类型创建了一个新的WP_Query,我正在尝试动态更改偏移量。我的查询是在Making Custom Queries using Offset and Pagination之后建模的,但我更改了它所以它不使用钩子,因为我没有更改主查询。无论如何,帖子以正确的顺序显示,当我echo var_dump ($new_query->get ('offset') );时,设置正确的偏移量;但是,当我加载页面时,没有偏移。任何人都可以帮我弄清楚为什么没有应用偏移量?

function new_query_function ($next_topic) {
    $args = array(
        'post_type' => 'custom_post_type',
        'meta_key' => 'topic',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
    );
    $new_query = new WP_Query ($args);

    $offset = ($new_query->found_posts) - $next_topic;
    $ppp = (int) get_option ('posts_per_page');

    if ($new_query->is_paged) {
        $page_offset = $offset + ( ($new_query->query_vars['paged'] - 1) * $ppp );
        $new_query->set ('offset', $page_offset);
    } else {
        $new_query->set ('offset', $offset);
    }

    $new_query->found_posts = $next_topic;
    return $new_query;
}

编辑:我正在实现这个功能也可能是相关的,所以这里是:

$new_query = new_query_function($next_topic);

while ( $new_query->have_posts() ) {
    $new_query->the_post();
    the_title();
    the_content();
    //etc.
}
wp_reset_query();

1 个答案:

答案 0 :(得分:0)

找到答案。对于任何好奇的人:

function vici_apad_query($next_topic) {
    $args = array(
            'post_type' => 'vici_apad',
            'meta_query' => array(
                    array(
                            'key' => 'topic',
                            'value' => $next_topic,
                            'compare' => '<=',
                    )
            ),
            'orderby' => 'meta_value_num',
            'order' => 'DESC',
        );
    $new_query = new WP_Query( $args );

    return $new_query;

}

实现方式相同,但wp_reset_query()替换为wp_reset_postdata(),因为无需重置整个查询。

我实际上使我的代码更简单而不是最复杂。真是个惊喜。

相关问题