WP_QUERY возвращает пустой набор при запуске из запланированного события WP-CRON

Я пытаюсь построить график wp cron, чтобы проверять ежечасно, если нам нужно отправить напоминания по электронной почте пользователю, удовлетворяющему определенным критериям.

Моя настройка выглядит так:

  • У меня есть класс reminders который заботится обо всех фильтрах запросов WP, а также настройке моих писем, обновлении моих сообщений после отправки электронной почты и т. Д. Для CPT, удовлетворяющих указанным критериям.
  • В этом классе у меня есть крючок в моей функции _construct() чтобы добавить к моей public function do_reminders() в мое запланированное событие.
  • Мое запланированное событие добавлено при активации плагина
  • Я создаю объект reminders подключенный к init поэтому конструктор может добавить функцию do_reminders в запланированный крючок
  • Я использую плагин Core Control, чтобы убедиться, что моя функция do_reminders подключена к запланированному событию, и это так.

Проблема

В то время как запланированное событие выполняется, оно не отправляет напоминания, которые ему нужно.

Если я тестирую функцию do_reminders , запустив ее в init она будет работать, но когда событие расписания запускает ее, кажется, что мой запрос возвращает пустой набор.

Так мои вопросы были бы, как отладить это? Что на самом деле происходит здесь? Запускаются ли запланированные события до того, как объекты запроса будут доступны?

Я попытался понять, почему моя функция работает, если я вызываю ее непосредственно из «init», как это

 add_action( 'init', 'my_test_check'); function my_test_check(){ $reminders = new MY_Reminders(); $reminders->do_reminders(); } 

но когда это называется так

 add_action( 'my_scheduled_hook', 'my_test_check'); function my_test_check(){ $reminders = new MY_Reminders(); $reminders->do_reminders(); } 

мой запрос возвращает пустой набор, поэтому в основном ничего не отправляется! У меня заканчиваются идеи, почему это происходит и что тестировать

Solutions Collecting From Web of "WP_QUERY возвращает пустой набор при запуске из запланированного события WP-CRON"

Хорошо, я потратил огромное количество времени, пытаясь отладить это! Поиск вокруг я использовал $wpdb->queries вместе с define( 'SAVEQUERIES', true ); для отладки запросов, выполненных при запуске wp-cron.

то я узнал, что, когда выполнялись задания cron, мой запрос был настроен на 'post_status' => trash ! Неудивительно, что у меня не было никаких ошибок, и, как выясняется, на днях я тестировал конкретный запрос, и эта функция по-прежнему выполнялась в моей functions.php и затрагивала только тех пользователей, которые не регистрировались в моем браузере, запрос!

Короче говоря, ничего не делать с wp-cron или wp_query (и даже с моим кодом), очистить после ваших тестов (я должен знать лучше :: facepalm) и использовать инструменты отладки, чтобы помочь вам найти виновника!