我为自定义帖子类型创建了一个新的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();
答案 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()
,因为无需重置整个查询。
我实际上使我的代码更简单而不是最复杂。真是个惊喜。