wp_get_scheduled_event

The timeline below displays how wordpress function wp_get_scheduled_event has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Retrieves a scheduled event.
 *
 * Retrieves the full event object for a given event, if no timestamp is specified the next
 * scheduled event is returned.
 *
 * @since 5.1.0
 *
 * @param string   $hook      Action hook of the event.
 * @param array    $args      Optional. Array containing each separate argument to pass to the hook's callback function.
 *                            Although not passed to a callback, these arguments are used to uniquely identify the
 *                            event, so they should be the same as those used when originally scheduling the event.
 *                            Default empty array.
 * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event
 *                            is returned. Default null.
 * @return object|false {
 *     The event object. False if the event does not exist.
 *
 *     @type string       $hook      Action hook to execute when the event is run.
 *     @type int          $timestamp Unix timestamp (UTC) for when to next run the event.
 *     @type string|false $schedule  How often the event should subsequently recur.
 *     @type array        $args      Array containing each separate argument to pass to the hook's callback function.
 *     @type int          $interval  Optional. The interval time in seconds for the schedule. Only present for recurring events.
 * }
 */
function wp_get_scheduled_event($hook, $args = array(), $timestamp = null)
{
    /**
     * Filter to override retrieving a scheduled event.
     *
     * Returning a non-null value will short-circuit the normal process,
     * returning the filtered value instead.
     *
     * Return false if the event does not exist, otherwise an event object
     * should be returned.
     *
     * @since 5.1.0
     *
     * @param null|false|object $pre  Value to return instead. Default null to continue retrieving the event.
     * @param string            $hook Action hook of the event.
     * @param array             $args Array containing each separate argument to pass to the hook's callback function.
     *                                Although not passed to a callback, these arguments are used to uniquely identify
     *                                the event.
     * @param int|null  $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event.
     */
    $pre = apply_filters('pre_get_scheduled_event', null, $hook, $args, $timestamp);
    if (null !== $pre) {
        return $pre;
    }
    if (null !== $timestamp && !is_numeric($timestamp)) {
        return false;
    }
    $crons = _get_cron_array();
    if (empty($crons)) {
        return false;
    }
    $key = md5(serialize($args));
    if (!$timestamp) {
        // Get next event.
        $next = false;
        foreach ($crons as $timestamp => $cron) {
            if (isset($cron[$hook][$key])) {
                $next = $timestamp;
                break;
            }
        }
        if (!$next) {
            return false;
        }
        $timestamp = $next;
    } elseif (!isset($crons[$timestamp][$hook][$key])) {
        return false;
    }
    $event = (object) array('hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[$timestamp][$hook][$key]['schedule'], 'args' => $args);
    if (isset($crons[$timestamp][$hook][$key]['interval'])) {
        $event->interval = $crons[$timestamp][$hook][$key]['interval'];
    }
    return $event;
}

WordPress Version: 6.2

/**
 * Retrieves a scheduled event.
 *
 * Retrieves the full event object for a given event, if no timestamp is specified the next
 * scheduled event is returned.
 *
 * @since 5.1.0
 *
 * @param string   $hook      Action hook of the event.
 * @param array    $args      Optional. Array containing each separate argument to pass to the hook's callback function.
 *                            Although not passed to a callback, these arguments are used to uniquely identify the
 *                            event, so they should be the same as those used when originally scheduling the event.
 *                            Default empty array.
 * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event
 *                            is returned. Default null.
 * @return object|false {
 *     The event object. False if the event does not exist.
 *
 *     @type string       $hook      Action hook to execute when the event is run.
 *     @type int          $timestamp Unix timestamp (UTC) for when to next run the event.
 *     @type string|false $schedule  How often the event should subsequently recur.
 *     @type array        $args      Array containing each separate argument to pass to the hook's callback function.
 *     @type int          $interval  Optional. The interval time in seconds for the schedule. Only present for recurring events.
 * }
 */
function wp_get_scheduled_event($hook, $args = array(), $timestamp = null)
{
    /**
     * Filter to preflight or hijack retrieving a scheduled event.
     *
     * Returning a non-null value will short-circuit the normal process,
     * returning the filtered value instead.
     *
     * Return false if the event does not exist, otherwise an event object
     * should be returned.
     *
     * @since 5.1.0
     *
     * @param null|false|object $pre  Value to return instead. Default null to continue retrieving the event.
     * @param string            $hook Action hook of the event.
     * @param array             $args Array containing each separate argument to pass to the hook's callback function.
     *                                Although not passed to a callback, these arguments are used to uniquely identify
     *                                the event.
     * @param int|null  $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event.
     */
    $pre = apply_filters('pre_get_scheduled_event', null, $hook, $args, $timestamp);
    if (null !== $pre) {
        return $pre;
    }
    if (null !== $timestamp && !is_numeric($timestamp)) {
        return false;
    }
    $crons = _get_cron_array();
    if (empty($crons)) {
        return false;
    }
    $key = md5(serialize($args));
    if (!$timestamp) {
        // Get next event.
        $next = false;
        foreach ($crons as $timestamp => $cron) {
            if (isset($cron[$hook][$key])) {
                $next = $timestamp;
                break;
            }
        }
        if (!$next) {
            return false;
        }
        $timestamp = $next;
    } elseif (!isset($crons[$timestamp][$hook][$key])) {
        return false;
    }
    $event = (object) array('hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[$timestamp][$hook][$key]['schedule'], 'args' => $args);
    if (isset($crons[$timestamp][$hook][$key]['interval'])) {
        $event->interval = $crons[$timestamp][$hook][$key]['interval'];
    }
    return $event;
}

WordPress Version: 5.7

/**
 * Retrieve a scheduled event.
 *
 * Retrieve the full event object for a given event, if no timestamp is specified the next
 * scheduled event is returned.
 *
 * @since 5.1.0
 *
 * @param string   $hook      Action hook of the event.
 * @param array    $args      Optional. Array containing each separate argument to pass to the hook's callback function.
 *                            Although not passed to a callback, these arguments are used to uniquely identify the
 *                            event, so they should be the same as those used when originally scheduling the event.
 *                            Default empty array.
 * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event
 *                            is returned. Default null.
 * @return object|false The event object. False if the event does not exist.
 */
function wp_get_scheduled_event($hook, $args = array(), $timestamp = null)
{
    /**
     * Filter to preflight or hijack retrieving a scheduled event.
     *
     * Returning a non-null value will short-circuit the normal process,
     * returning the filtered value instead.
     *
     * Return false if the event does not exist, otherwise an event object
     * should be returned.
     *
     * @since 5.1.0
     *
     * @param null|false|object $pre  Value to return instead. Default null to continue retrieving the event.
     * @param string            $hook Action hook of the event.
     * @param array             $args Array containing each separate argument to pass to the hook's callback function.
     *                                Although not passed to a callback, these arguments are used to uniquely identify
     *                                the event.
     * @param int|null  $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event.
     */
    $pre = apply_filters('pre_get_scheduled_event', null, $hook, $args, $timestamp);
    if (null !== $pre) {
        return $pre;
    }
    if (null !== $timestamp && !is_numeric($timestamp)) {
        return false;
    }
    $crons = _get_cron_array();
    if (empty($crons)) {
        return false;
    }
    $key = md5(serialize($args));
    if (!$timestamp) {
        // Get next event.
        $next = false;
        foreach ($crons as $timestamp => $cron) {
            if (isset($cron[$hook][$key])) {
                $next = $timestamp;
                break;
            }
        }
        if (!$next) {
            return false;
        }
        $timestamp = $next;
    } elseif (!isset($crons[$timestamp][$hook][$key])) {
        return false;
    }
    $event = (object) array('hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[$timestamp][$hook][$key]['schedule'], 'args' => $args);
    if (isset($crons[$timestamp][$hook][$key]['interval'])) {
        $event->interval = $crons[$timestamp][$hook][$key]['interval'];
    }
    return $event;
}

WordPress Version: 5.4

/**
 * Retrieve a scheduled event.
 *
 * Retrieve the full event object for a given event, if no timestamp is specified the next
 * scheduled event is returned.
 *
 * @since 5.1.0
 *
 * @param string   $hook      Action hook of the event.
 * @param array    $args      Optional. Array containing each separate argument to pass to the hook's callback function.
 *                            Although not passed to a callback, these arguments are used to uniquely identify the
 *                            event, so they should be the same as those used when originally scheduling the event.
 * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event is returned.
 * @return object|false The event object. False if the event does not exist.
 */
function wp_get_scheduled_event($hook, $args = array(), $timestamp = null)
{
    /**
     * Filter to preflight or hijack retrieving a scheduled event.
     *
     * Returning a non-null value will short-circuit the normal process,
     * returning the filtered value instead.
     *
     * Return false if the event does not exist, otherwise an event object
     * should be returned.
     *
     * @since 5.1.0
     *
     * @param null|false|object $pre  Value to return instead. Default null to continue retrieving the event.
     * @param string            $hook Action hook of the event.
     * @param array             $args Array containing each separate argument to pass to the hook's callback function.
     *                                Although not passed to a callback, these arguments are used to uniquely identify
     *                                the event.
     * @param int|null  $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event.
     */
    $pre = apply_filters('pre_get_scheduled_event', null, $hook, $args, $timestamp);
    if (null !== $pre) {
        return $pre;
    }
    if (null !== $timestamp && !is_numeric($timestamp)) {
        return false;
    }
    $crons = _get_cron_array();
    if (empty($crons)) {
        return false;
    }
    $key = md5(serialize($args));
    if (!$timestamp) {
        // Get next event.
        $next = false;
        foreach ($crons as $timestamp => $cron) {
            if (isset($cron[$hook][$key])) {
                $next = $timestamp;
                break;
            }
        }
        if (!$next) {
            return false;
        }
        $timestamp = $next;
    } elseif (!isset($crons[$timestamp][$hook][$key])) {
        return false;
    }
    $event = (object) array('hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[$timestamp][$hook][$key]['schedule'], 'args' => $args);
    if (isset($crons[$timestamp][$hook][$key]['interval'])) {
        $event->interval = $crons[$timestamp][$hook][$key]['interval'];
    }
    return $event;
}

WordPress Version: 5.3

/**
 * Retrieve a scheduled event.
 *
 * Retrieve the full event object for a given event, if no timestamp is specified the next
 * scheduled event is returned.
 *
 * @since 5.1.0
 *
 * @param string   $hook      Action hook of the event.
 * @param array    $args      Optional. Array containing each separate argument to pass to the hook's callback function.
 *                            Although not passed to a callback, these arguments are used to uniquely identify the
 *                            event, so they should be the same as those used when originally scheduling the event.
 * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event is returned.
 * @return false|object The event object. False if the event does not exist.
 */
function wp_get_scheduled_event($hook, $args = array(), $timestamp = null)
{
    /**
     * Filter to preflight or hijack retrieving a scheduled event.
     *
     * Returning a non-null value will short-circuit the normal process,
     * returning the filtered value instead.
     *
     * Return false if the event does not exist, otherwise an event object
     * should be returned.
     *
     * @since 5.1.0
     *
     * @param null|false|object $pre  Value to return instead. Default null to continue retrieving the event.
     * @param string            $hook Action hook of the event.
     * @param array             $args Array containing each separate argument to pass to the hook's callback function.
     *                                Although not passed to a callback, these arguments are used to uniquely identify
     *                                the event.
     * @param int|null  $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event.
     */
    $pre = apply_filters('pre_get_scheduled_event', null, $hook, $args, $timestamp);
    if (null !== $pre) {
        return $pre;
    }
    if (null !== $timestamp && !is_numeric($timestamp)) {
        return false;
    }
    $crons = _get_cron_array();
    if (empty($crons)) {
        return false;
    }
    $key = md5(serialize($args));
    if (!$timestamp) {
        // Get next event.
        $next = false;
        foreach ($crons as $timestamp => $cron) {
            if (isset($cron[$hook][$key])) {
                $next = $timestamp;
                break;
            }
        }
        if (!$next) {
            return false;
        }
        $timestamp = $next;
    } elseif (!isset($crons[$timestamp][$hook][$key])) {
        return false;
    }
    $event = (object) array('hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[$timestamp][$hook][$key]['schedule'], 'args' => $args);
    if (isset($crons[$timestamp][$hook][$key]['interval'])) {
        $event->interval = $crons[$timestamp][$hook][$key]['interval'];
    }
    return $event;
}

WordPress Version: 5.1

/**
 * Retrieve a scheduled event.
 *
 * Retrieve the full event object for a given event, if no timestamp is specified the next
 * scheduled event is returned.
 *
 * @since 5.1.0
 *
 * @param string   $hook      Action hook of the event.
 * @param array    $args      Optional. Array containing each separate argument to pass to the hook's callback function.
 *                            Although not passed to a callback, these arguments are used to uniquely identify the
 *                            event, so they should be the same as those used when originally scheduling the event.
 * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event is returned.
 * @return bool|object The event object. False if the event does not exist.
 */
function wp_get_scheduled_event($hook, $args = array(), $timestamp = null)
{
    /**
     * Filter to preflight or hijack retrieving a scheduled event.
     *
     * Returning a non-null value will short-circuit the normal process,
     * returning the filtered value instead.
     *
     * Return false if the event does not exist, otherwise an event object
     * should be returned.
     *
     * @since 5.1.0
     *
     * @param null|bool $pre       Value to return instead. Default null to continue retrieving the event.
     * @param string    $hook      Action hook of the event.
     * @param array     $args      Array containing each separate argument to pass to the hook's callback function.
     *                             Although not passed to a callback, these arguments are used to uniquely identify the
     *                             event.
     * @param int|null  $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event.
     */
    $pre = apply_filters('pre_get_scheduled_event', null, $hook, $args, $timestamp);
    if (null !== $pre) {
        return $pre;
    }
    if (null !== $timestamp && !is_numeric($timestamp)) {
        return false;
    }
    $crons = _get_cron_array();
    if (empty($crons)) {
        return false;
    }
    $key = md5(serialize($args));
    if (!$timestamp) {
        // Get next event.
        $next = false;
        foreach ($crons as $timestamp => $cron) {
            if (isset($cron[$hook][$key])) {
                $next = $timestamp;
                break;
            }
        }
        if (!$next) {
            return false;
        }
        $timestamp = $next;
    } elseif (!isset($crons[$timestamp][$hook][$key])) {
        return false;
    }
    $event = (object) array('hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[$timestamp][$hook][$key]['schedule'], 'args' => $args);
    if (isset($crons[$timestamp][$hook][$key]['interval'])) {
        $event->interval = $crons[$timestamp][$hook][$key]['interval'];
    }
    return $event;
}