Почему первая цифра пагинации не работает на wordpress?
<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1; $query = new WP_Query( array( 'post_type' => 'page', 'post_parent' => 65, 'posts_per_page' => 4, 'orderby' => 'meta_value_num', 'meta_key' => 'post_rating', 'paged' => $page ) ); ?> <div class="row justify-content-center mt-3" id="response"> <?php while ($query->have_posts()): $query->the_post(); ?> // Здесь карточка <?php endwhile; $big = 999999999; // число для замены $links = paginate_links( array( 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 'format' => '?paged=%#%', 'current' => $page, 'type' => 'array', 'prev_text' => 'Назад', 'next_text' => 'Вперед', 'total' => $query->max_num_pages, ) ); if (is_array($links)) { // если пагинация есть echo '<ul class="pagination">'; foreach ($links as $link) { if (strpos($link, 'current') !== false) echo "<li class='active'>$link</li>"; // если это активная страница else echo "<li>$link</li>"; } echo '</ul>'; } ?> </div> <?php wp_reset_query(); ?> |
<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1; $query = new WP_Query( array( 'post_type' => 'page', 'post_parent' => 65, 'posts_per_page' => 4, 'orderby' => 'meta_value_num', 'meta_key' => 'post_rating', 'paged' => $page ) ); ?> <div class="row justify-content-center mt-3" id="response"> <?php while ($query->have_posts()): $query->the_post(); ?> // Здесь карточка <?php endwhile; $big = 999999999; // число для замены $links = paginate_links( array( 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 'format' => '?paged=%#%', 'current' => $page, 'type' => 'array', 'prev_text' => 'Назад', 'next_text' => 'Вперед', 'total' => $query->max_num_pages, ) ); if (is_array($links)) { // если пагинация есть echo '<ul class="pagination">'; foreach ($links as $link) { if (strpos($link, 'current') !== false) echo "<li class='active'>$link</li>"; // если это активная страница else echo "<li>$link</li>"; } echo '</ul>'; } ?> </div> <?php wp_reset_query(); ?>
Дополнительно:
Потому что это страница на которой вы находитесь
Вверху написано же, что сейчас я на втором странице пагинации!!!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

У вас смешаны два варианта пагинации:
get_pagenum_link()для обычных архивов и кастомныйWP_Queryвнутри страницы. Для страницы с шорткодом чаще надёжнее явно формироватьpagedи base под текущий URL. Ещё важно: если это страница WordPress, иногда вместоpagedнужно читатьpage.Попробуйте так:
$paged = max(1, get_query_var('paged'), get_query_var('page')); $query = new WP_Query([ 'post_type' => 'page', 'post_parent' => 65, 'posts_per_page' => 4, 'orderby' => 'meta_value_num', 'meta_key' => 'post_rating', 'paged' => $paged, ]);
А ссылки пагинации:
echo paginate_links([ 'base' => trailingslashit(get_permalink()) . '%_%', 'format' => 'page/%#%/', 'current' => $paged, 'total' => $query->max_num_pages, 'prev_text' => 'Назад', 'next_text' => 'Вперёд', ]);
Если первая цифра ведёт не туда или не работает, проверьте, не конфликтует ли slug страницы с rewrite-правилами, и пересохраните постоянные ссылки в админке. Также после своего цикла обязательно вызывайте
wp_reset_postdata(). Для AJAX-подгрузки карточек пагинация делается иначе: ссылки должны не перезагружать страницу, а передавать номер страницы в JS и запрашивать данные черезadmin-ajax.phpили REST API.Ещё один важный момент: если вы выводите пагинацию внутри страницы, не называйте параметр запроса так же, как уже использует WordPress для основной страницы. При нестандартной структуре иногда проще сделать ссылки с параметром
?my_page=2и передавать его в свойWP_Query. Тогда вы не конфликтуете с rewrite-правилами, а первая страница остаётся обычным URL без лишних параметров.