wp_unschedule_event() WP 2.1.0

Видаляє з розкладу вказану крон подію (завдання). Для видалення потрібно вказати всі дані: позначку часу, ім’я хука та параметри.

Щоб скасувати подію, ви повинні знати точний час, у який вона запланована, і аргументи, які мають бути передані функції.

Докладніше про видалення крон завдань: WP Cron (планувальник) у WordPress

Крон завдання додається через wp_schedule_event() .

Основа для:
wp_clear_scheduled_hook()

Хуки з функції

Повертає

true|false|WP_Error. Повертає false, якщо неправильно вказано параметр $timestamp .

Використання

wp_unschedule_event( $timestamp, $hook, $args, $wp_error );
$timestamp
(рядок) (обов’язковий)
Мітка часу у форматі UNIX (321546564), в яку має наступити подія, яку ми хочемо видалити.
$hook
(рядок) (обов’язковий)
Назва хука до якого “чіпляється” функція виконуюча дія, вказана в
$timestamp час.
$args
(масив)
Масив аргументів, які мають бути передані функції.


За замовчуванням: array()
$wp_error
(true/false) (WP 5.7)
true – поверне об’єкт
WP_Error при невдачі.


Типово: false

Приклади

0

#1 Скасуємо крон-завдання

Передбачається, що функції прикріпленої до хука ніяких даних не передаються, тому $args вказувати не обов’язково.

$timestamp = wp_next_scheduled( 'my_schedule_hook'); //> 1424106123

wp_unschedule_event( $timestamp, 'my_schedule_hook');

1424106123– Час, коли завдання має бути виконане.

0

#2 Скасуємо крон-завдання з параметрами

Якщо під час реєстрації крон-завдання їй було вказано параметр, то видалення такої завдання обов’язково потрібно вказати ці параметри, інакше подія не удалиться.

wp_unschedule_event(1424106123, 'my_schedule_hook', array('id'=>654));

список змін

З версії 2.1.0Введено.
З версії 5.1.0Відновлювальна величина встановлена ​​на boolean позначення успіху або помилки, pre_unschedule_event filtr added до шорт-circuit функції.
З версії 5.7.0The $wp_error parameter був added.

Код wp_unschedule_event() WP 6.0.2

function wp_unschedule_event( $timestamp, $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;
	}

	/**
	 * Filter to preflight або hijack unscheduling of events.
	 *
	 * Returning a non-null value буде short-circuit the normal unscheduling
	 * процеси, що викликають функцію до відновлення фільтрованого значення instead.
	 *
	 * Для plugins replacing wp-cron, return true if the event was successfully
	 * unscheduled, false if not.
	 *
	 * @ Since 5.1.0
	 * @since 5.7.0 The `$wp_error` parameter був added, and a `WP_Error` object can now be returned.
	 *
	 * @param null|bool|WP_Error $pre Value to return instead. Default null to continue unscheduling the Event.
	 * @param int $timestamp Timestamp для того, щоб скористатися ним.
	 * @param string $hook Action hook, виконання which will be unscheduled.
	 * @param array $args Arguments до pass to hook's callback function.
	 * @param bool $wp_error Whether to return WP_Error on failure.
	 */
	$pre = apply_filters( 'pre_unschedule_event', null, $timestamp, $hook, $args, $wp_error );

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

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

		return $pre;
	}

	$crons = _get_cron_array();
	$key = md5(serialize( $args ) );
	unset( $crons[ $timestamp ][ $hook ][ $key ] );
	if ( empty( $crons[ $timestamp ][ $hook ] ) ) {
		unset( $crons[ $timestamp ][ $hook ] );
	}
	if ( empty( $crons[ $timestamp ] ) ) {
		unset($crons[$timestamp]);
	}

	return _set_cron_array($crons, $wp_error);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *