如果您想在单个查询中完成它,那么钩子pre_get_posts
要查询所有帖子,请执行以下操作:
function wpd_archive_all_posts( $query ){
if( $query->is_post_type_archive( \'attractions\' ) && $query->is_main_query() )
$query->set( \'posts_per_page\', -1 );
}
add_action( \'pre_get_posts\', \'wpd_archive_all_posts\' );
然后在模板中手动分页这些结果:
if( have_posts() ){
$posts_per_page = 10;
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$start = ( ( $paged - 1 ) * $posts_per_page ) - 1;
$end = ( $paged * $posts_per_page ) - 1;
$wp_query->current_post = $start;
while( have_posts() ){
the_post();
// output post data here
if( $end == $wp_query->current_post )
break;
}
}
然后倒带并输出所有内容:
$wp_query->rewind_posts();
while( have_posts() ){
the_post();
the_title();
}
这里需要注意的是,第一个循环可能不会调用
loop_end
动作,因为你可能在击中最后一根柱子之前就躲开了。实际上,这可能有副作用,也可能没有副作用,这取决于您是否有挂接该操作的插件。