wp_schedule_event() WordPress Function

The wp_schedule_event() function is used to schedule a task to be run at a specific time. The task is added to the WordPress cron system, which will execute it when the specified time is reached. This function can be used to schedule various tasks such as checking for updates, sending email notifications, or anything else that needs to be run on a regular basis.

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().

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.


Top ↑

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 arguments to pass to the hook's callback function. Each value in the array is passed to the callback as an individual parameter. The array keys are ignored.

Default value: array()

$wp_error

(bool)(Optional) Whether to return a WP_Error on failure.

Default value: false


Top ↑

Return

(bool|WP_Error) True if event successfully scheduled. False or WP_Error on failure.


Top ↑

Source

File: wp-includes/cron.php

function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp_error = false ) {
	// Make sure timestamp is a positive integer.
	if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
		if ( $wp_error ) {
			return new WP_Error(
				'invalid_timestamp',
				__( 'Event timestamp must be a valid Unix timestamp.' )
			);
		}

		return false;
	}

	$schedules = wp_get_schedules();

	if ( ! isset( $schedules[ $recurrence ] ) ) {
		if ( $wp_error ) {
			return new WP_Error(
				'invalid_schedule',
				__( 'Event schedule does not exist.' )
			);
		}

		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, $wp_error );

	if ( null !== $pre ) {
		if ( $wp_error && false === $pre ) {
			return new WP_Error(
				'pre_schedule_event_false',
				__( 'A plugin prevented the event from being scheduled.' )
			);
		}

		if ( ! $wp_error && is_wp_error( $pre ) ) {
			return false;
		}

		return $pre;
	}

	/** This filter is documented in wp-includes/cron.php */
	$event = apply_filters( 'schedule_event', $event );

	// A plugin disallowed this event.
	if ( ! $event ) {
		if ( $wp_error ) {
			return new WP_Error(
				'schedule_event_false',
				__( 'A plugin disallowed this event.' )
			);
		}

		return false;
	}

	$key = md5( serialize( $event->args ) );

	$crons = _get_cron_array();
	if ( ! is_array( $crons ) ) {
		$crons = 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, $wp_error );
}


Top ↑

Changelog

Changelog
VersionDescription
5.7.0The $wp_error parameter was added.
5.1.0Return value modified to boolean indicating success or failure, 'pre_schedule_event' filter added to short-circuit the function.
2.1.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.