Anda dapat membuat waktu jadwal baru melalui cron_schedules:
function my_cron_schedules($schedules){
if(!isset($schedules["5min"])){
$schedules["5min"] = array(
'interval' => 5*60,
'display' => __('Once every 5 minutes'));
}
if(!isset($schedules["30min"])){
$schedules["30min"] = array(
'interval' => 30*60,
'display' => __('Once every 30 minutes'));
}
return $schedules;
}
add_filter('cron_schedules','my_cron_schedules');
Sekarang Anda dapat menjadwalkan fungsi Anda:
wp_schedule_event(time(), '5min', 'my_schedule_hook', $args);
Untuk hanya menjadwalkannya sekali, bungkus dalam suatu fungsi dan periksa sebelum menjalankannya:
$args = array(false);
function schedule_my_cron(){
wp_schedule_event(time(), '5min', 'my_schedule_hook', $args);
}
if(!wp_next_scheduled('my_schedule_hook',$args)){
add_action('init', 'schedule_my_cron');
}
Perhatikan parameter $ args! Tidak menentukan parameter $ args di wp_next_scheduled, tetapi memiliki $ args untuk wp_schedule_event, akan menyebabkan jadwal acara yang hampir tak terbatas jumlahnya sama (bukan hanya satu).
Terakhir, buat fungsi aktual yang ingin Anda jalankan:
function my_schedule_hook(){
// codes go here
}
Saya pikir penting untuk menyebutkan bahwa wp-cron memeriksa jadwal dan menjalankan pekerjaan yang dijadwalkan setiap kali halaman dimuat.
Jadi, jika Anda memiliki situs web dengan lalu lintas rendah yang hanya memiliki 1 pengunjung per jam, wp-cron hanya akan berjalan ketika pengunjung menelusuri situs Anda (satu jam sekali). Jika Anda memiliki situs dengan lalu lintas tinggi dengan pengunjung yang meminta halaman setiap detik, wp-cron akan terpicu setiap detik menyebabkan beban tambahan pada server.
Solusinya adalah dengan menonaktifkan wp-cron dan memicunya melalui pekerjaan cron nyata dalam interval waktu Anda tercepat mengulangi pekerjaan wp-cron dijadwalkan (5 menit dalam kasus Anda).
Lucas Rolff menjelaskan masalahnya dan memberikan solusinya secara terperinci.
Sebagai alternatif, Anda dapat menggunakan layanan pihak ke-3 gratis seperti UptimeRobot untuk menanyakan situs Anda (dan memicu wp-cron) setiap 5 menit, jika Anda tidak ingin menonaktifkan wp-cron dan memicunya melalui pekerjaan cron nyata.