Wp_Schedule_Event mỗi ngày vào thời gian cụ thể


9

Tôi viết mã theo sau để chạy chức năng của tôi mỗi ngày vào lúc 16:20 ..

Nhưng tôi đoán là vấn đề trong mã ..

không làm việc

Dấu thời gian Epoch: 1427488800

28/03/2015 1:10:00 SA

if( !wp_next_scheduled( 'import_into_db' ) ) {
wp_schedule_event( time('1427488800'), 'daily', 'import_into_db' );

function import_into_db(){

////My code

}
add_action('wp', 'import_into_db');
}

1
Các time()chức năng không mất một cuộc tranh cãi đầu vào, hãy thử các strtotime()chức năng hoặc strftime()chức năng thay vào đó, để tạo ra timestamps tùy chỉnh từ một chuỗi. Nhưng nếu bạn đã có dấu thời gian, bạn không cần chúng.
bạch dương

Câu trả lời:


18

WP Cron chạy, khi ai đó truy cập trang web của bạn. Vì vậy, nếu không ai ghé thăm, cron không bao giờ chạy.

Bây giờ có 2 giải pháp:

  1. Vô hiệu hóa WP Cron, sử dụng một công việc cron thực sự và tùy chỉnh nó.

https://support.hostgator.com/articles/specialized-help/technical/wordpress/how-to-replace-wordpress-cron-with-a-real-cron-job

  1. Sử dụng một khoảng tùy chỉnh trong wp_schedule_event():

    function myprefix_custom_cron_schedule( $schedules ) {
        $schedules['every_six_hours'] = array(
            'interval' => 21600, // Every 6 hours
            'display'  => __( 'Every 6 hours' ),
        );
        return $schedules;
    }
    add_filter( 'cron_schedules', 'myprefix_custom_cron_schedule' );
    
    //Schedule an action if it's not already scheduled
    if ( ! wp_next_scheduled( 'myprefix_cron_hook' ) ) {
        wp_schedule_event( time(), 'every_six_hours', 'myprefix_cron_hook' );
    }
    
    ///Hook into that action that'll fire every six hours
     add_action( 'myprefix_cron_hook', 'myprefix_cron_function' );
    
    //create your function, that runs on cron
    function myprefix_cron_function() {
        //your function...
    }
    

và bạn có thể thấy những tuts này

http://www.nextscripts.com/tutorials/wp-cron-schedcing-t task-in-wordpress /

http://www.icablesletheme.com/optizes-wordpress-replace-wp_cron-real-cron-job/

http://www.smashingmagazine.com/2013/10/16/schedule-events-USE-wordpress-cron/

cron tùy chỉnh

http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules

http://www.smashingmagazine.com/2013/10/16/schedule-events-USE-wordpress-cron/

http://www.viper007bond.com/2011/12/14/how-to-create-custom-wordpress-cron-inter đạn /

http://www.sitepoint.com/mastering-wordpress-cron/

https://tommcfarlin.com/wordpress-cron-jobs/

http://www.paulund.co.uk/create-cron-jobs-in-wordpress

cron linux

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

http://www.thesitewizard.com/general/set-cron-job.shtml

http://code.tutsplus.com/tutorials/scheduling-t task-with-cron-jobs - net-8800

tìm kiếm trên google


12

Thay vì time () , hãy sử dụng hàm strtotime () để bạn có thể chỉ định thời gian trong ngày - nó sẽ sử dụng ngày hôm nay với thời gian bạn chỉ định. Vì vậy, trong trường hợp của bạn:

strtotime('16:20:00'); // 4:20 PM

Cách sử dụng trong wp_schedule_eventhàm sẽ như thế này:

wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );

2

Chà, 1427488800 giải quyết đến ngày 27 tháng 3 năm 2015, vì vậy sự kiện của bạn thậm chí chưa được thiết lập để bắt đầu.

Ngoài ra, hãy nhớ rằng các sự kiện WP theo lịch trình sẽ chỉ kích hoạt nếu có ai đó truy cập trang web vào thời điểm đó.


Bây giờ, làm thế nào để sửa chữa? @vancoder
Mortzea

0

Mã này đang làm việc cho tôi, tôi tin rằng nó gần với câu hỏi ban đầu. Bạn muốn lấy thời gian UNIX + múi giờ khi bạn muốn nó thực thi. Khi cron thực thi và bị xóa khỏi WP, nó sẽ tự tạo lại tại thời điểm bạn chỉ định.

Trong ví dụ sau, tôi có nó hoạt động cho AEST (GMT + 10) @ 6AM mỗi sáng. Vì vậy, tôi đang lên lịch cho GMT 20:00 mỗi ngày.

if (!wp_next_scheduled('cron_name')) {
    $time = strtotime('today'); //returns today midnight
    $time = $time + 72000; //add an offset for the time of day you want, keeping in mind this is in GMT.
    wp_schedule_event($time, 'daily', 'cron_name');
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.