Цель
Я хочу использовать wp_schedule_single_event( )
для выполнения одного события, которое отправляет мне электронное письмо через 8 минут после того, как пользователь отправляет форму.
Проблема
Следующий код в моем functions.php
:
function nkapi_send_to_system( $args ) {
wp_mail( 'xxx', 'xxx', $args );
}
add_action( 'nkapi_send', 'nkapi_send_to_system' );
function schedule_event( $id ) {
wp_schedule_single_event( current_time( 'timestamp' ) + 480, 'nkapi_send', array( $id ) );
}
И следующий код используется для вызова schedule-event
:
schedule_event( $_SESSION['insert_id'] ); // the $_SESSION var contains an INT
После ожидания более 8 минут в моем почтовом ящике не было электронного письма.
Что я пробовал
С помощью плагина Core Control можно увидеть, какие задания cron запланированы.
После нескольких изменений мне удалось получить их совершенно правильно, и, что лучше, когда я нажал «Запустить сейчас», я фактически получил электронное письмо в свой почтовый ящик.
Но почему cron не работает, когда я захожу на сайт через 8 минут. Что возможно не так с этим кодом? Я должен сказать, что я впервые использую WP Cron.
Я пробовал больше
После комментария vancoder id решил проверить, работает ли код, если я поместил следующий код прямо в functions.php
:
function schedule_event( $id ) {
wp_schedule_single_event( time(), 'nkapi_send', array( $id ) );
}
if ( isset( $_SESSION['insert_id'] ) ) {
if ( ! array_key_exists( 'insert_scheduled', $_SESSION ) || $_SESSION['insert_scheduled'] != $_SESSION['insert_id'] ) {
schedule_event( $_SESSION['insert_id'] );
$_SESSION['insert_scheduled'] = $_SESSION['insert_id'];
}
}
Недостатком этого кода является то, что пользователь должен перейти на другую страницу, прежде чем этот код будет выполнен. Но с другой стороны, это тоже не работает, так что это не будет моей первой проблемой ...
schedule_event( )
, скажем, в верхней части включенного файла, загруженного шорткодом.
schedule_event( $_SESSION['insert_id'] );
увольняют?