Table of contents
Custom Interval Cron Job Weekly
Custom Interval Cron Job Monthly
Custom Interval Cron Job Yearly

Custom WordPress Schedule interval Weekly, Monthly, or Yearly

Custom WordPress Schedule interval Weekly, Monthly, or Yearly

Hadie Danker
4 bulan yang lalu
Web Development
Custom WordPress Schedule interval Weekly, Monthly, or Yearly
Table of contents
Custom Interval Cron Job Weekly
Custom Interval Cron Job Monthly
Custom Interval Cron Job Yearly

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

php
1
wp_schedule_event( $timestamp, $recurrence, $hook, $args);

Kita lihat dulu detail parameternya

  1. $timestamp adalah waktu pembanding awal kapan cron tersebut akan dijalankan. Biasa yang digunakan adalah waktu saat ini dan Anda bisa menggunakan fungsi time() untuk mengisinya
  2. $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
  3. $hook adalah nama function yang akan Anda jalankan.
  4. $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

php
1
register_activation_hook( __FILE__, 'dankedev_plugin_activation' );
2
3
function dankedev_plugin_activation() {
4
if ( ! wp_next_scheduled( 'wpshout_do_thing' ) ) {
5
wp_schedule_event( time(), 'daily', 'hook_dankedev_daily_backup_db' );
6
}
7
}
8
9
10
add_action('hook_dankedev_daily_backup_db', 'do_dankedev_daily_backup_db');
11
12
function do_dankedev_daily_backup_db()
13
{
14
// do what you will do
15
}

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

php
1
function custom_cron_job_weekly( $schedules ) {
2
if(!isset($schedules['weekly'])){
3
$schedules['weekly'] = array(
4
'display' => __( 'Once a week', 'textdomain' ),
5
'interval' => 60*60*24*7,
6
);
7
}
8
9
return $schedules;
10
}
11
add_filter( 'cron_schedules', 'custom_cron_job_weekly' );

Custom Interval Cron Job Monthly

php
1
function custom_cron_job_monthly( $schedules ) {
2
if(!isset($schedules['monthly'])){
3
$schedules['monthly'] = array(
4
'display' => __( 'Once a month', 'textdomain' ),
5
'interval' => 60*60*24*30,
6
);
7
}
8
9
return $schedules;
10
}
11
add_filter( 'cron_schedules', 'custom_cron_job_monthly' );

Custom Interval Cron Job Yearly

php
1
function custom_cron_job_yearly( $schedules ) {
2
if(!isset($schedules['yearly'])){
3
$schedules['yearly'] = array(
4
'display' => __( 'Once a year', 'textdomain' ),
5
'interval' => 60*60*24*365,
6
);
7
}
8
9
return $schedules;
10
}
11
add_filter( 'cron_schedules', 'custom_cron_job_yearly' );

Atau agar lebih mudah Anda bisa gabungkan dalam satu functions

php
1
function custom_cron_job_time( $schedules ){
2
if(!isset($schedules['weekly'])){
3
$schedules['weekly'] = array(
4
'display' => __( 'Once a week', 'textdomain' ),
5
'interval' => 60*60*24*7,
6
);
7
}
8
9
if(!isset($schedules['monthly'])){
10
$schedules['monthly'] = array(
11
'display' => __( 'Once a month', 'textdomain' ),
12
'interval' => 60*60*24*30,
13
);
14
}
15
16
if(!isset($schedules['yearly'])){
17
$schedules['yearly'] = array(
18
'display' => __( 'Once a year', 'textdomain' ),
19
'interval' => 60*60*24*365,
20
);
21
}
22
23
return $schedules;
24
}
25
26
add_filter( 'cron_schedules', 'custom_cron_job_time' );

Selebihnya tinggal anda gunakan di cron schedule yang Anda buat

php
1
wp_schedule_event( time(), 'monthly', 'hook_dankedev_daily_backup_db' );
WordPress