Target
Saya ingin menggunakan wp_schedule_single_event( )
untuk menjalankan satu peristiwa yang mengirimi saya email 8 menit setelah pengguna mengirimkan formulir.
Masalah
Kode berikut ada di saya 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 ) );
}
Dan kode berikut digunakan untuk memanggil schedule-event
:
schedule_event( $_SESSION['insert_id'] ); // the $_SESSION var contains an INT
Setelah menunggu lebih dari 8 menit, tidak ada email di inbox saya.
Apa yang saya coba
Dengan plugin Core Control , Anda dapat melihat jadwal tugas cron yang dijadwalkan.
Setelah beberapa perubahan saya berhasil membuatnya cukup benar, dan lebih baik, ketika saya menekan "Jalankan Sekarang", saya benar-benar mendapatkan email di kotak masuk saya.
Tetapi mengapa cron's tidak mengeksekusi ketika saya mengunjungi situs saya setelah 8 menit. Apa yang mungkin salah dengan kode ini? Saya harus mengatakan bahwa ini adalah pertama kalinya saya menggunakan WP Cron.
Saya mencoba lebih banyak
Setelah komentar vancoder id memutuskan untuk menguji apakah kodenya berfungsi jika saya langsung memasukkan kode berikut di 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'];
}
}
Kelemahan dari kode ini adalah, pengguna harus pergi ke halaman lain sebelum kode ini dieksekusi. Tapi di sisi lain, ini juga tidak berfungsi sehingga tidak akan menjadi masalah pertamaku ...
schedule_event( )
, katakanlah di atas file yang disertakan dimuat oleh kode pendek.
schedule_event( $_SESSION['insert_id'] );
dipecat?