Использование переменных при Ajax в WordPress

130
07 сентября 2019, 17:20

Есть страница, на которой вывожу штук 20 постов.

ID этих постов вставляю в массив $do_not_duplicate. При следующем цикле использую данный массив, чтобы отсеять уже выведенные посты, чтобы не было дубликатов. Для этого в цикле добавляю параметр post__not_in.

Если делать стандартно на одной и той же странице, то всё работает.

Но при создании Ajax в functions.php, переменная $do_not_duplicate оказывается пустой. Я пытаюсь достать её через ключевое слово global, но она пустая...

И в итоге, у меня 20 постов вывелись обычным циклом. И потом эти же самые 20 постов выводятся уже через Ajax. Как мне достать всё это в Ajax?

Answer 1

Надо понимать, что php на сервере работает по принципу "выстрелил и забыл". После вывода страницы на экран все переменные уничтожаются, память освобождается. Вы никак не "достанете" из ajax переменную, которая существовала при генерации страницы.

Вам нужно передать значение вашей переменной (массив) в ajax с помощью wp_localize_script(), а потом передать её назад на сервер в вызове ajax. На сервере в обработчике ajax использовать в post__not_in, добавить в этот массив вновь полученные посты и снова передать в js. И так далее.

Подробности о wp_localize_script() можно прочитать здесь.

READ ALSO
Расширить поля при оплате

Расширить поля при оплате

как добавить свои поля - type_pay(число),days(количество дней),user при оплате через paypal

136
Валидация большой формы

Валидация большой формы

Есть несколько больших форм, в которых сотни реквизитов, они заполняются вручнуюИ при сохранении нужно провести логический контроль заполненной...

124
Fatal error: Can't use function return value in write context in … 32 line

Fatal error: Can't use function return value in write context in … 32 line

При попытке активации темы wordpress ругается на ошибку в 32 cтрокеВот эта строка

107
Моделирование планетарной системы

Моделирование планетарной системы

Задание заключается в том, чтобы на примере не менее 5 классов, которые содержат не менее 4 функций использовать концепции ООП: инкапсуляцию,...

141