Mục đích
Tôi muốn sử dụng wp_schedule_single_event( )
để thực thi một sự kiện duy nhất gửi cho tôi e-mail 8 phút sau khi người dùng gửi biểu mẫu.
Vấn đề
Các mã sau đây là trong của tôi 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 ) );
}
Và đoạn mã sau được sử dụng để gọi schedule-event
:
schedule_event( $_SESSION['insert_id'] ); // the $_SESSION var contains an INT
Sau khi chờ đợi hơn 8 phút, không có e-mail trong hộp thư đến của tôi.
Những gì tôi đã cố gắng
Với plugin Core Control , có thể thấy các công việc định kỳ được lên lịch.
Sau một vài thay đổi, tôi đã xoay sở để có được chúng khá chính xác và tốt hơn, khi tôi nhấn "Chạy ngay", tôi thực sự nhận được một e-mail trong hộp thư đến của mình.
Nhưng tại sao cron's không thực thi khi tôi truy cập trang web của mình sau 8 phút. Điều gì có thể là sai với mã này? Tôi phải nói rằng đây là lần đầu tiên tôi sử dụng WP Cron.
Tôi đã cố gắng nhiều hơn
Sau khi nhận xét về id vancoder đã quyết định kiểm tra xem mã có hoạt động không nếu tôi đặt mã sau đây trực tiếp vào 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'];
}
}
Nhược điểm của mã này là, người dùng phải chuyển sang trang khác trước khi mã này được thực thi. Nhưng mặt khác, điều này cũng không hoạt động nên đó không phải là vấn đề đầu tiên của tôi ...
schedule_event( )
, giả sử ở trên cùng của tệp được bao gồm bởi shortcode.
schedule_event( $_SESSION['insert_id'] );
Bị sa thải ở đâu và như thế nào ?