wp_schedule_event( int $timestamp, string $recurrence, string $hook, array $args = array(), bool $wp_error = false )
Schedules a recurring event.
Description
Schedules a hook which will be triggered by WordPress at the specified interval.
The action will trigger when someone visits your WordPress site if the scheduled time has passed.
Valid values for the recurrence are ‘hourly’, ‘daily’, and ‘twicedaily’. These can be extended using the ‘cron_schedules’ filter in wp_get_schedules().
Use wp_next_scheduled() to prevent duplicate events.
Use wp_schedule_single_event() to schedule a non-recurring event.
Parameters
- $timestamp
-
(Required) Unix timestamp (UTC) for when to next run the event.
- $recurrence
-
(Required) How often the event should subsequently recur.<br> See wp_get_schedules() for accepted values.
- $hook
-
(Required) Action hook to execute when the event is run.
- $args
-
(Optional) Array containing arguments to pass to the hook's callback function. Each value in the array is passed to the callback as an individual parameter.<br> The array keys are ignored.
Default value: array()
- $wp_error
-
(Optional) Whether to return a WP_Error on failure.
Default value: false
Return
(bool|WP_Error) True if event successfully scheduled. False or WP_Error on failure.
Source
File: wp-includes/cron.php
function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array()) {
// Make sure timestamp is a positive integer
if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
return false;
}
$crons = _get_cron_array();
$schedules = wp_get_schedules();
if ( !isset( $schedules[$recurrence] ) )
return false;
$event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $recurrence, 'args' => $args, 'interval' => $schedules[$recurrence]['interval'] );
/** This filter is documented in wp-includes/cron.php */
$event = apply_filters( 'schedule_event', $event );
// A plugin disallowed this event
if ( ! $event )
return false;
$key = md5(serialize($event->args));
$crons[$event->timestamp][$event->hook][$key] = array( 'schedule' => $event->schedule, 'args' => $event->args, 'interval' => $event->interval );
uksort( $crons, "strnatcasecmp" );
_set_cron_array( $crons );
}
Changelog
Version | Description |
---|---|
5.7.0 | The $wp_error parameter was added. |
5.1.0 | Return value modified to boolean indicating success or failure, 'pre_schedule_event' filter added to short-circuit the function. |
2.1.0 | Introduced. |