#php #ajax #wordpress
#php #ajax #wordpress
Вопрос:
Я пытаюсь создать кнопку «загрузить больше сообщений» для моей страницы блога WordPress, используя AJAX. Функция Javascript, которая заботится о передаче параметров ‘paged’, ‘offset’ и ‘posts_per_page’, делает это успешно (я проверял сто раз!).
Параметры offset и posts_per_page работают нормально (я неоднократно менял их значения, чтобы проверить это), но WP_Query всегда возвращает записи на главной странице, даже если значение $page меняется каждый раз, когда загружается больше записей.
Просто если значение $paged где-то перепуталось, я использовал статические числа для параметра ‘paged’, но он по-прежнему показывает только сообщения на первой странице, независимо от значения.
Все выполняется нормально, и я не получаю сообщения об ошибке при включенной отладке. Сообщения загружаются — просто не те, которые нужно.
Другая информация: моя собственная тема, плагины сейчас не запущены.
Приведенный ниже код взят из функции в моем functions.php досье.
$args = array(
'suppress_filters' => true,
'post_type' => 'post',
'orderby' => 'date',
'order' => 'desc',
'posts_per_page' => $ppp,
'paged' => $page,
'offset' => $offset, //I've tried simply putting 3, 5 etc
);
$loop = new WP_Query($args);
if ($loop -> have_posts()) :
while ($loop -> have_posts()) : $loop -> the_post();
the_title();
endwhile;
endif;
wp_reset_postdata();
Я ввел только то, что, по моему мнению, является релевантным кодом, чтобы его было легче читать. Дайте мне знать, если вы хотите, чтобы я что-то добавил. И спасибо!
РЕДАКТИРОВАТЬ: использование функции query() напрямую заставляет ее работать, но я действительно не хочу связываться с основным объектом запроса…и это просто означает, что все остальное в моем коде в порядке. WP_Query просто странный.
Ответ №1:
Вы не можете использовать offset
и paged
вместе — вы бы использовали только одно или другое. Их совместное использование нарушает разбивку на страницы. Если вы хотите, чтобы сообщения отображались на странице 2 (при условии, что у вас 10 на страницу), используйте либо:
'paged' => 2
или
'offset' => 10
Комментарии:
1. Ах, вы правы! Я думал, что смещение было применено к начальным сообщениям, а затем цикл начал разбивать на страницы остальные сообщения оттуда. Я полагаю, неправильное понимание того, как работает WP_Query. Я не знаю, почему я предположил, что простое использование ‘offset’ будет семантически неверным, хотя технически правильным. В любом случае, большое вам спасибо!