Мета
Я хочу використовувати 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.
Після декількох змін мені вдалося отримати їх цілком коректними, а ще краще, коли я натиснув "Виконати зараз", я фактично отримав електронну пошту у свою поштову скриньку.
Але чому крон не виконується, коли я відвідую свій сайт через 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'] );
звільняють?