Многократный пост-запрос с разбиением на страницы в шорткоде
Я хочу несколько запросов с нумерацией постов типа 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')
чтобы сделать ваш код более эффективным и поддерживаемым.