Wp_Schedule_Event setiap hari pada waktu tertentu

9

Saya menulis kode berikut untuk menjalankan fungsi saya setiap hari pukul 16.20 ..

Tapi saya kira masalah dalam kode ..

tidak bekerja

Stempel waktu zaman: 1427488800

3/28/2015 1:10:00 pagi

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');
}
Mortzea
sumber
1
The time()fungsi tidak mengambil argumen input, coba strtotime()fungsi atau strftime()fungsi bukan, untuk membuat cap waktu kustom dari string. Tetapi jika Anda sudah mendapatkan cap waktu, Anda tidak membutuhkannya.
birgire

Jawaban:

18

WP Cron berjalan, ketika seseorang mengunjungi situs web Anda. Jadi, jika tidak ada yang mengunjungi, cron tidak akan berjalan.

Sekarang ada 2 solusi:

  1. Nonaktifkan WP Cron, gunakan pekerjaan cron nyata dan sesuaikan.

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

  1. Gunakan interval khusus di 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...
    }
    

dan Anda dapat melihat tuts ini

http://www.nextscripts.com/tutorials/wp-cron-scheduling-tasks-in-wordpress/

http://www.iceablethemes.com/optimize-wordpress-replace-wp_cron-real-cron-job/

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

cp Wp kustom

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

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

http://www.viper007bond.com/2011/12/14/how-to-create-custom-wordpress-cron-intervals/

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-tasks-with-cron-jobs--net-8800

pencarian Google

amir rasabeh
sumber
12

Alih-alih waktu () , gunakan fungsi strtotime () sehingga Anda dapat menentukan waktu hari - itu akan menggunakan tanggal hari ini dengan waktu yang Anda tentukan. Jadi dalam kasus Anda:

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

Penggunaan dalam wp_schedule_eventfungsi akan terlihat seperti ini:

wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );
Goran Jakovljevic
sumber
2

Nah, 1427488800 diselesaikan hingga 27 Maret 2015, jadi acara Anda bahkan belum diatur untuk memulai.

Juga, ingatlah bahwa acara WP terjadwal hanya akan diaktifkan jika seseorang membuka situs pada saat itu.

vancoder
sumber
Sekarang, Bagaimana cara memperbaikinya? @vancoder
Mortzea
0

Kode ini berfungsi untuk saya, saya yakin ini lebih dekat ke pertanyaan awal. Anda ingin mendapatkan zona waktu + zona waktu UNIX untuk saat Anda ingin mengeksekusi. Setelah cron dijalankan dan dihapus dari WP, cron itu akan kembali sendiri pada saat Anda tentukan.

Dalam contoh berikut, saya membuatnya bekerja untuk AEST (GMT + 10) @ 6AM setiap pagi. Jadi saya menjadwalkannya untuk GMT 20:00 setiap hari.

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');
}
Rob P
sumber