set_site_transient()WP 2.9.0

Устанавливает или обновляет временные данные для сайта в сети мультисайт.

Рассчитана на использование в режиме мультисайт, когда данные нужно сохранить для всей сети сайтов, а не для отдельного сайта. Если мультисайт включен, то данные будут сохранятся в таблицу wp_sitemeta, а не wp_options, если нет (обычная установка), то работает также как set_transient(), только префикс ключа будет _site_transient_ вместо _transient_.

Отличается от set_transient() тем что при сохранении в базе данных использует перфикс _site_transient_ вместо _transient_, а также используются функции get_site_option(), update_site_option(), ..., а не get_option(), update_option(), ....

Если включен режим постоянного объектного кэширования см. wp_using_ext_object_cache(), то управление передается wp_cache_set().

НЕ нужно сериализовать сохраняемое значение (если оно нуждается с сериализации), оно будет сериализовано автоматически.

Работает на основе: wp_using_ext_object_cache()
Основа для: wp_check_browser_version()

Возвращает

true|false.

  • true - когда указанное значение установлено (сохранено).
  • false - когда указанное значение не удалось установить (сохранить).

Использование

set_site_transient( $transient, $value, $expiration );
$transient(строка) (обязательный)
Ключ. Не нужно экранировать для SQL. Должен быть короче 167 символов.
$value(смешанный) (обязательный)
Transient значение. Не нужно экранировать для SQL.
$expiration(число)
Время жизни в секундах
По умолчанию: 0 (бессрочно)

Примеры

0

#1 Кэширование данных полученных из каталога плагинов (используется в ядре)

function install_popular_tags( $args = array() ) {

	// Получаем md5 хеш аргументов
	$key = md5( serialize( $args ) );

	// получаем кеш если он существует
	if ( false !== ( $tags = get_site_transient( 'poptags_' . $key ) ) ) {
		// Возвращаем кэшированный результат
		return $tags;
	}

	// получаем данные из каталога плагинов с wordpress.org
	$tags = plugins_api( 'hot_tags', $args );

	// в случае ошибки возвращаем ее без кеширования
	if ( is_wp_error( $tags ) ) {
		return $tags;
	}

	// Кэшируем полученое на три часа
	set_site_transient( 'poptags_' . $key, $tags, 3 * HOUR_IN_SECONDS );

	return $tags;
}

Заметки

Список изменений

С версии 2.9.0 Введена.

Код set_site_transient() WP 6.4.3

function set_site_transient( $transient, $value, $expiration = 0 ) {

	/**
	 * Filters the value of a specific site transient before it is set.
	 *
	 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
	 *
	 * @since 3.0.0
	 * @since 4.4.0 The `$transient` parameter was added.
	 *
	 * @param mixed  $value     New value of site transient.
	 * @param string $transient Transient name.
	 */
	$value = apply_filters( "pre_set_site_transient_{$transient}", $value, $transient );

	$expiration = (int) $expiration;

	/**
	 * Filters the expiration for a site transient before its value is set.
	 *
	 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
	 *
	 * @since 4.4.0
	 *
	 * @param int    $expiration Time until expiration in seconds. Use 0 for no expiration.
	 * @param mixed  $value      New value of site transient.
	 * @param string $transient  Transient name.
	 */
	$expiration = apply_filters( "expiration_of_site_transient_{$transient}", $expiration, $value, $transient );

	if ( wp_using_ext_object_cache() || wp_installing() ) {
		$result = wp_cache_set( $transient, $value, 'site-transient', $expiration );
	} else {
		$transient_timeout = '_site_transient_timeout_' . $transient;
		$option            = '_site_transient_' . $transient;

		if ( false === get_site_option( $option ) ) {
			if ( $expiration ) {
				add_site_option( $transient_timeout, time() + $expiration );
			}
			$result = add_site_option( $option, $value );
		} else {
			if ( $expiration ) {
				update_site_option( $transient_timeout, time() + $expiration );
			}
			$result = update_site_option( $option, $value );
		}
	}

	if ( $result ) {

		/**
		 * Fires after the value for a specific site transient has been set.
		 *
		 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
		 *
		 * @since 3.0.0
		 * @since 4.4.0 The `$transient` parameter was added
		 *
		 * @param mixed  $value      Site transient value.
		 * @param int    $expiration Time until expiration in seconds.
		 * @param string $transient  Transient name.
		 */
		do_action( "set_site_transient_{$transient}", $value, $expiration, $transient );

		/**
		 * Fires after the value for a site transient has been set.
		 *
		 * @since 3.0.0
		 *
		 * @param string $transient  The name of the site transient.
		 * @param mixed  $value      Site transient value.
		 * @param int    $expiration Time until expiration in seconds.
		 */
		do_action( 'setted_site_transient', $transient, $value, $expiration );
	}

	return $result;
}