安排一个事件只运行一次。

原型

wp_schedule_single_event( int $timestamp, string $hook, array $args = array() )

描述

安排一个事件,该事件将在你指定的时间由WordPress操作核心执行一次。如果计划时间已过,当有人访问你的WordPress网站时,该操作将启动。

参数

$timestamp (int) (Required) 用于何时运行事件的Unix时间戳(UTC)。

$hook (string) (Required) 在事件运行时执行的Action钩子。

$args (array) (Optional)  传递给hook的回调函数的参数。

返回值

(false|void)  如果事件未安排,则返回false。

源文件

路径:wp-includes/cron.php

<?php
...
function wp_schedule_single_event( $timestamp, $hook, $args = array()) {
	// Make sure timestamp is a positive integer
	if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
		return false;
	}
	// Don't schedule a duplicate if there's already an identical event due within 10 minutes of it
	$next = wp_next_scheduled($hook, $args);
	if ( $next && abs( $next - $timestamp ) <= 10 * MINUTE_IN_SECONDS ) {
		return false;
	}
	$crons = _get_cron_array();
	$event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => false, 'args' => $args );
	/**
	 * Filters a single event before it is scheduled.
	 *
	 * @since 3.1.0
	 *
	 * @param stdClass $event {
	 *     An object containing an event's data.
	 *
	 *     @type string       $hook      Action hook to execute when event is run.
	 *     @type int          $timestamp Unix timestamp (UTC) for when to run the event.
	 *     @type string|false $schedule  How often the event should recur. See `wp_get_schedules()`.
	 *     @type array        $args      Arguments to pass to the hook's callback function.
	 * }
	 */
	$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 );
	uksort( $crons, "strnatcasecmp" );
	_set_cron_array( $crons );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_schedule_single_event/