wp_schedule_event( int $timestamp, string $recurrence, string $hook, array $args = array() )
Schedules a recurring event.
Description 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().
Note that scheduling an event to occur within 10 minutes of an existing event with the same action hook will be ignored unless you pass unique $args
values for each scheduled event.
Use wp_next_scheduled() to prevent duplicate events.
Use wp_schedule_single_event() to schedule a non-recurring event.
Parameters Parameters
- $timestamp
-
(int) (Required) Unix timestamp (UTC) for when to next run the event.
- $recurrence
-
(string) (Required) How often the event should subsequently recur. See wp_get_schedules() for accepted values.
- $hook
-
(string) (Required) Action hook to execute when the event is run.
- $args
-
(array) (Optional) Array containing each separate argument to pass to the hook's callback function.
Default value: array()
Return Return
(bool) True if event successfully scheduled. False for failure.
Source 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; } $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 */ $pre = apply_filters( 'pre_schedule_event', null, $event ); if ( null !== $pre ) { return $pre; } /** 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 = _get_cron_array(); $crons[ $event->timestamp ][ $event->hook ][ $key ] = array( 'schedule' => $event->schedule, 'args' => $event->args, 'interval' => $event->interval, ); uksort( $crons, 'strnatcasecmp' ); return _set_cron_array( $crons ); }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
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. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Schedule hourly event with multiple arguments
wp_schedule_event() pass arguments by reference, so we have to send multiple data as indexed array.
Don’t forgot to add total number of argument as $accepted_args on add_action().
Don’t forget to clean the scheduler on deactivation:
Schedule an hourly event
To schedule an hourly event in a plugin, call
wp_schedule_event
on activation (otherwise you will end up with a lot of scheduled events!):Don’t forget to clean the scheduler on deactivation:
Note: If you are using custom recurrences make sure to call wp_schedule_event after you added the cron_schedules filter.
Usage