Многократный пост-запрос с разбиением на страницы в шорткоде

Я хочу несколько запросов с нумерацией постов типа POST. Я пишу код, но он не возвращает правильный пост при нажатии на 2-й или 3-й странице. Может быть, работает нумерация страниц или другие ошибки. Я хочу несколько запросов с нумерацией постов типа POST. Я пишу код, но он не возвращает правильный пост при нажатии на 2-й или 3-й странице. Может быть, работает нумерация страниц или другие ошибки. Я не могу найти это.

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');

1 ответ

Похоже, вы проверяете переменную запроса page, но в коде нумерации страниц вы устанавливаете формат ?paged=%#%, Вы хотите убедиться, что везде используете одну и ту же переменную запроса, поэтому вам следует установить формат ?page=%#%,

Кроме того, независимо от ответа, но кое-что я заметил, вы устанавливаете переменную $page в get_query_var('page'), но никогда не используйте его. Я бы рекомендовал использовать его везде, где у вас есть get_query_var('page') чтобы сделать ваш код более эффективным и поддерживаемым.

Другие вопросы по тегам