Intereting Posts
используя wp_tag_cloud с пользовательской таксономией Категория как класс для пользовательского типа сообщения Стиль меню для последнего пункта меню Как перехватить основной запрос и ввести пользовательские соединения / порядок по / группе по критериям Как получить сообщения по нескольким идентификаторам почты? Создание списка персонализированных сообщений, внутри администратора другого настраиваемого типа сообщений Плагин календаря событий для курсов, показывающих полный год Клонирование add_settings_field () с помощью jQuery Пользовательский виджет заголовка / кодировка HTML Поддержка сортировки массивов WordPress с Photocrati Theme сохраняет исходный URL-адрес сайта – помогает решить основную проблему Как объединить 2 php-функции в одну функцию с настраиваемым полем Получить заголовок и URL-адрес вложенного родительского сообщения Разрешить доступ через wp-login.php тот же шаблон архива для разных пользовательских сообщений

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) и использовать инструменты отладки, чтобы помочь вам найти виновника!