0

我想使用帖子类型 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');
4

1 回答 1

0

看起来您正在检查查询变量page,但在分页代码中您将格式设置为?paged=%#%. 您需要确保在任何地方都使用相同的查询变量,因此您应该将格式设置为?page=%#%.

此外,与答案无关,但我注意到,您将变量设置$pageget_query_var('page'),但从不使用它。我建议在任何你必须get_query_var('page')使它的代码更高效和可维护的地方使用它。

于 2018-08-09T20:21:09.687 回答