Есть страница, на которой вывожу штук 20 постов.
ID этих постов вставляю в массив $do_not_duplicate. При следующем цикле использую данный массив, чтобы отсеять уже выведенные посты, чтобы не было дубликатов. Для этого в цикле добавляю параметр post__not_in.
Если делать стандартно на одной и той же странице, то всё работает.
Но при создании Ajax в functions.php, переменная $do_not_duplicate оказывается пустой. Я пытаюсь достать её через ключевое слово global, но она пустая...
И в итоге, у меня 20 постов вывелись обычным циклом. И потом эти же самые 20 постов выводятся уже через Ajax. Как мне достать всё это в Ajax?
Надо понимать, что php на сервере работает по принципу "выстрелил и забыл". После вывода страницы на экран все переменные уничтожаются, память освобождается. Вы никак не "достанете" из ajax переменную, которая существовала при генерации страницы.
Вам нужно передать значение вашей переменной (массив) в ajax с помощью wp_localize_script(), а потом передать её назад на сервер в вызове ajax. На сервере в обработчике ajax использовать в post__not_in, добавить в этот массив вновь полученные посты и снова передать в js. И так далее.
Подробности о wp_localize_script() можно прочитать здесь.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей