首页 文章

WP_Query偏移不起作用

提问于
浏览
0

我为自定义帖子类型创建了一个新的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

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

    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() 替换,因为不需要重置整个查询 .

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

相关问题