dankedev

· 29 Juli 2026

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' );

Butuh bantuan mewujudkannya?

Tim Dankedev siap membantu — konsultasi gratis.