Custom WordPress Schedule interval Weekly, Monthly, or Yearly

0 Komentar
Custom WordPress Schedule interval Weekly, Monthly, or 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

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

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' );
Weekly email summary

Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.

Berikan Komentar
Email anda tidak akan ditampilkan. Field yang wajib diisi ditandai dengan *
*