Directory

wp_get_schedules() – Function | Developer.WordPress.org

wp_get_schedules(): array

Retrieves supported event recurrence schedules.

Description

The default supported recurrences are ‘hourly’, ‘twicedaily’, ‘daily’, and ‘weekly’.
A plugin may add more by hooking into the ‘cron_schedules’ filter.
The filter accepts an array of arrays. The outer array has a key that is the name of the schedule, for example ‘monthly’. The value is an array with two keys, one is ‘interval’ and the other is ‘display’.

The ‘interval’ is a number in seconds of when the cron job should run.
So for ‘hourly’ the time is HOUR_IN_SECONDS (60 * 60 or 3600). For ‘monthly’, the value would be MONTH_IN_SECONDS (30 * 24 * 60 * 60 or 2592000).

The ‘display’ is the description. For the ‘monthly’ key, the ‘display’ would be __( 'Once Monthly' ).

For your plugin, you will be passed an array. You can add your schedule by doing the following:

// Filter parameter variable name is 'array'.
$array['monthly'] = array(
    'interval' => MONTH_IN_SECONDS,
    'display'  => __( 'Once Monthly' )
);

Return

array The array of cron schedules keyed by the schedule name.
  • ...$0 array
    Cron schedule information.
    • interval int
      The schedule interval in seconds.
    • display string
      The schedule display name.

    More Information

    Example Return Values:

    Array
    (
    [hourly] => Array
    (
    [interval] => 3600
    [display] => Once Hourly
    )
    [twicedaily] => Array
    (
    [interval] => 43200
    [display] => Twice Daily
    )
    [daily] => Array
    (
    [interval] => 86400
    [display] => Once Daily
    )
    )

    Source

    function wp_get_schedules() {
    	$schedules = array(
    		'hourly'     => array(
    			'interval' => HOUR_IN_SECONDS,
    			'display'  => __( 'Once Hourly' ),
    		),
    		'twicedaily' => array(
    			'interval' => 12 * HOUR_IN_SECONDS,
    			'display'  => __( 'Twice Daily' ),
    		),
    		'daily'      => array(
    			'interval' => DAY_IN_SECONDS,
    			'display'  => __( 'Once Daily' ),
    		),
    		'weekly'     => array(
    			'interval' => WEEK_IN_SECONDS,
    			'display'  => __( 'Once Weekly' ),
    		),
    	);
    
    	/**
    	 * Filters the non-default cron schedules.
    	 *
    	 * @since 2.1.0
    	 *
    	 * @param array $new_schedules {
    	 *     An array of non-default cron schedules keyed by the schedule name. Default empty array.
    	 *
    	 *     @type array ...$0 {
    	 *         Cron schedule information.
    	 *
    	 *         @type int    $interval The schedule interval in seconds.
    	 *         @type string $display  The schedule display name.
    	 *     }
    	 * }
    	 */
    	return array_merge( apply_filters( 'cron_schedules', array() ), $schedules );
    }
    

    Hooks

    apply_filters( ‘cron_schedules’, array $new_schedules )

    Filters the non-default cron schedules.

    Changelog

    VersionDescription
    5.4.0The 'weekly' schedule was added.
    2.1.0Introduced.

    User Contributed Notes

    1. Skip to note 2 content

      Basic Example
      The ‘display’ is the description. For the ‘weekly’ key, the ‘display’ would be

      __( 'Once Weekly' );

      For your plugin, you will be passed an array. You can easily add a new interval schedule by doing the following using the ‘cron_schedules’ filter.

       add_filter( 'cron_schedules', 'cron_add_weekly' );
       
       function cron_add_weekly( $schedules ) {
       	// Adds once weekly to the existing schedules.
       	$schedules['weekly'] = array(
       		'interval' => 604800,
       		'display' => __( 'Once Weekly' )
       	);
       	return $schedules;
       }

    You must log in before being able to contribute a note or feedback.