ЗАПРОС WP возвращает пустой набор при запуске из запланированного события WP-CRON
Я пытаюсь составить расписание wp cron, чтобы ежечасно проверять, нужно ли нам отправлять напоминания по электронной почте пользователю, удовлетворяющему определенным критериям.
Моя настройка выглядит так
- У меня есть класс
reminders
, который выполняет всю фильтрацию запросов WP, настраивает мои электронные письма, обновляет мои сообщения после отправки электронного письма и т. Д. Для CPT, удовлетворяющего указанным критериям. - В этом классе у меня есть крючок в моей функции
_construct()
, чтобы добавить его к моей функцииpublic function do_reminders()
, чтобы мое запланированное мероприятие. - Мое запланированное событие было добавлено при активации плагина
- Я создаю свой объект
reminders
, подключенный кinit
, чтобы конструкция могла добавить функциюdo_reminders
к запланированному подключению - Я использую плагин Core Control , чтобы убедиться, что моя функция
do_reminders
подключена к запланированному событию, и это так.
Проблема
Во время выполнения запланированного события оно не рассылает напоминания, как должно.
Если я проверю свой do_reminders
функция, запустив ее в 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();
}
Мой запрос возвращает пустой набор, поэтому в принципе, ничего не рассылается! У меня заканчиваются идеи о том, почему это происходит и что тестировать дальше
1 answers
Хорошо, я потратил ужасно много времени, пытаясь это отладить! При поиске я использовал $wpdb->queries
вместе с define( 'SAVEQUERIES', true );
для отладки запросов, выполняемых при запуске wp-cron.
Затем я узнал, что при выполнении заданий cron мой запрос был установлен в 'post_status' => trash
! Неудивительно, что я не получил никаких ошибок, и, как оказалось, на днях я опробовал конкретный запрос, и эта функция все еще работала в моей теме functions.php
и влияла только на не вошедших в систему пользователей, которые переопределяли мой cron запрос!
Короче говоря, ничего общего с wp-cron или wp_query (и даже с моим кодом), очистите свои тесты (я должен знать лучше::facepalm) и используйте инструменты отладки, чтобы помочь вам найти виновника!