我想使用POST类型的分页进行多个查询。我编写代码,但是单击第二页或第三页时,它不会返回正确的帖子。分页可能工作正常或其他错误。我想使用POST类型的分页进行多次查询。我编写代码,但是单击第二页或第三页时,它不会返回正确的帖子。分页可能工作正常或其他错误。我找不到。
function blogpost_shortcode($atts, $content = null){
extract( shortcode_atts( array(
'count' => '1',
), $atts) );
$page = get_query_var('page');
$q1 = new WP_Query( array(
'posts_per_page' => $count,
'post_type' => 'post',
'paged' => get_query_var('page')
) );
$q1_ids = wp_list_pluck( $q1->posts, 'ID' );
$q2 = new WP_Query(array('posts_per_page' => $count, 'post_type' => 'post', 'paged' => get_query_var('page'), 'post__not_in' => $q1_ids));
$blog_markup = '';
$blog_markup .= '
<div class="bwog_blog_wrap">';
while($q1->have_posts()) : $q1->the_post();
$idd = get_the_ID();
$blog_markup .= '
<div class="single_blog_wrap">
<h3>'.get_the_title($idd).'</h3>
</div>
';
endwhile;
while($q2->have_posts()) : $q2->the_post();
$idd = get_the_ID();
$blog_markup .= '
<div class="single_blog_wrap">
<h3>'.get_the_title($idd).'</h3>
</div>
';
endwhile;
$total_pages = $q1->max_num_pages;
$big = 999999999;
if ($total_pages > 1){
$current_page = max(1, get_query_var('page'));
$blog_markup.= '<nav class="page-nav">';
$blog_markup.= paginate_links(array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => $current_page,
'total' => $total_pages,
'prev_text' => 'Prev',
'next_text' => 'Next'
));
$blog_markup.= '</nav>';
}
$blog_markup .= '</div>';
wp_reset_query();
return $blog_markup;
}
add_shortcode('bwog_blog', 'blogpost_shortcode');
答案 0 :(得分:0)
您似乎正在检查查询变量page
,但是在分页代码中将格式设置为?paged=%#%
。您需要确保在所有地方都使用相同的查询变量,因此应将格式设置为?page=%#%
。
此外,与答案无关,但我注意到了一点,您将变量$page
设置为get_query_var('page')
,但是从不使用它。我建议在您拥有get_query_var('page')
的任何地方使用它,以使其代码更高效,更可维护。