Terkadang kita membutuhkan custom interval atau durasi untuk cron pada WordPress dijalankan.
Namun sebelum lebih lanjut membahas cara membuat custom inteval WordPress cron Schedule, kita perhatikan dulu function utama dari wp_schedule_event
wp_schedule_event( $timestamp, $recurrence, $hook, $args);
Kita lihat dulu detail parameternya
$timestamp
adalah waktu pembanding awal kapan cron tersebut akan dijalankan. Biasa yang digunakan adalah waktu saat ini dan Anda bisa menggunakan fungsitime()
untuk mengisinya$recurrence
berisikan string yang mendefinisikan kapan cron akan dijalankan, WordPress menyediakan tiga nilai yakni hourly (setiap jam), twicedaily (sehari dua kali) dan juga daily (sehari satu kali). Dan bagian ini yang akan menjadi pembahasan utama kita. Yakni membuat custom$recurrence
sesuai dengan kebutuhan kita$hook
adalah nama function yang akan Anda jalankan.- $
args
adalah argumen parameter yang akan Anda jalankan di $hook tadi. Kami jarang memakainya jadi tidak bisa menjelaskan lebih lanjut. Karena contoh2nya pun jarang ada.
Contoh penggunaaan Schedule Event
register_activation_hook( __FILE__, 'dankedev_plugin_activation' );
function dankedev_plugin_activation() {
if ( ! wp_next_scheduled( 'wpshout_do_thing' ) ) {
wp_schedule_event( time(), 'daily', 'hook_dankedev_daily_backup_db' );
}
}
add_action('hook_dankedev_daily_backup_db', 'do_dankedev_daily_backup_db');
function do_dankedev_daily_backup_db()
{
// do what you will do
}
Membuat Custom Internval Cron Job WordPress
Pada dasarnya waktu yang digunakan untuk cron job WordPress adalah second, jadi nilai dari hourly adalah 60×60 (3600 second).
Custom Interval Cron Job Weekly
function custom_cron_job_weekly( $schedules ) {
if(!isset($schedules['weekly'])){
$schedules['weekly'] = array(
'display' => __( 'Once a week', 'textdomain' ),
'interval' => 60*60*24*7,
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_weekly' );
Custom Interval Cron Job Monthly
function custom_cron_job_monthly( $schedules ) {
if(!isset($schedules['monthly'])){
$schedules['monthly'] = array(
'display' => __( 'Once a month', 'textdomain' ),
'interval' => 60*60*24*30,
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_monthly' );
Custom Interval Cron Job Yearly
function custom_cron_job_yearly( $schedules ) {
if(!isset($schedules['yearly'])){
$schedules['yearly'] = array(
'display' => __( 'Once a year', 'textdomain' ),
'interval' => 60*60*24*365,
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_yearly' );
Atau agar lebih mudah Anda bisa gabungkan dalam satu functions
function custom_cron_job_time( $schedules ){
if(!isset($schedules['weekly'])){
$schedules['weekly'] = array(
'display' => __( 'Once a week', 'textdomain' ),
'interval' => 60*60*24*7,
);
}
if(!isset($schedules['monthly'])){
$schedules['monthly'] = array(
'display' => __( 'Once a month', 'textdomain' ),
'interval' => 60*60*24*30,
);
}
if(!isset($schedules['yearly'])){
$schedules['yearly'] = array(
'display' => __( 'Once a year', 'textdomain' ),
'interval' => 60*60*24*365,
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_time' );
Selebihnya tinggal anda gunakan di cron schedule yang Anda buat
wp_schedule_event( time(), 'monthly', 'hook_dankedev_daily_backup_db' );