WordPress Cron не работает

У меня есть веб-сайт WordPress, который позволяет пользователю настроить напоминание на определенный день, он сохраняет его в базе данных, где он может быть отображен при входе пользователя в систему или отправить им электронное письмо.

Я следовал примеру кода, приведенного в http://codex.wordpress.org/Function_Reference/wp_cron и поместили приведенный ниже код в основной файл .php написанного мною плагина, который отлично работает во всех других отношениях.

if ( ! wp_next_scheduled( 'checkReminderEmails' ) ) {
wp_schedule_event( 1411693200, 'daily', 'checkReminderEmails' );
}                    //1411693200 is the unix timestamp for 1am a couple of days ago

add_action( 'checkReminderEmails', 'sendReminderEmails' );

function sendReminderEmails()
{
$table_name = $wpdb->prefix."reminders";
$query = "SELECT * FROM $table_name WHERE sendReminder = 1 and reminderDate = CURRENT_DATE( )";

$appointments = $wpdb->get_results( $query);
foreach ( $appointments as $info )
{
$message = "Hello here is your reminder.";
$toAddress = $info->userEmail;
$subject = "This is your reminder.";
wp_mail( $toAddress, $subject, $message);
}
} // end sendReminderEmails()

Я проверил таблицу wp_options в своей базе данных PHP и вижу там следующий код

{s:18:"sendReminderEmails";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1411693200;a:1:

Я могу получать другие электронные письма с веб-сайта с помощью wp_mail (), поэтому я знаю, что функциональность поддерживается сервером, и я знаю, что задания wp_cron не запускаются до тех пор, пока веб-сайт не будет посещен по истечении определенного времени, но я был не в состоянии заставить эту работу хрон работать правильно. Я что-то упускаю из виду?

Редактировать: для всех, кто интересуется, я использовал плагин wp-cron-dashboard (https://wordpress.org/plugins/wp-cron-dashboard/) несмотря на предупреждение о том, что он не обновлялся более 2 лет, чтобы проверить, правильно ли была запланирована моя работа cron.

Я также должен был добавить глобальный $ wpdb; к вершине моей функции причина, по которой она не запускалась, заключалась в том, что я не объявил, что не могу использовать функцию get_results ().

Я также обнаружил, что если вы зайдете в wp-cron.php, вы вручную запустите все запланированные задания cron, и все выходные данные будут отображаться там, так что можно отладить задание cron, добавив операторы echo и перейдя на эту страницу. ,

1

Решение

Я знаю, что это старый, но я вижу сразу, что вам нужно global $wpdb; как первая строка sendReminderEmails() функционировать, иначе это будет бомба.

Я часто быстро проверяю функции cron в моем front-page.php добавив что-то вроде sendReminderEmails(); exit; на вершину, просто как здравый смысл проверить, что функция работает вообще.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector