get_site_transient()WP 2.9.0

Получает значение временной опции главного сайта сети.

Если на сайте используется объектное кэширование, то временные опции будут получены из кэша, в противном случае данные берутся с помощью get_site_option() (см. логику работы в описании).

Используйте функцию get_transient(), когда нужно получить временную опцию текущего сайта, а не основного сайта сети.

Отличие get_transient() от get_site_transient() такое же как между get_option() и get_network_option().

Возвращает

Разное.

  • false возвращается в следующих случаях:

    • если временной опции не существует
    • или она имеет пустое значение
    • или она просрочена.
  • В других случаях возвращает полученное значение опции.

Заметка: возвращаемый false нужно проверять тождественным равенством (===), а не обычным двойным равенством, потому что в значении опции может находится 0 или пустая строка, пустой массив. По этой же причине, не нужно сохранять в значение опции false, сохраняйте вместо этого 0 или поместите false в массив.

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

get_site_transient( $transient );
$transient(строка) (обязательный)
Название временной опции.

Примеры

0

#1 Пример использования

Допустим у нас есть данные, которые используются на всех сайтах сети. Эти данные нужно получать по HTTP запросу из другого сайта, поэтому этот запрос хорошо бы закэшировать. Для такой цели хорошо подойдет эта функцию. Ниже показана логика такого кода:

$transient   = 'some_trans_name';
$remote_data = get_site_transient( $transient );

if( false === $remote_data ){
	$remote_data = file_get_contents( 'http://dom.ru/promo/yith-promo.xml' );
}

if( $remote_data ){
	set_site_transient( $transient, $remote_data, WEEK_IN_SECONDS );
}

Заметки

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

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

Код get_site_transient() WP 6.5.2

function get_site_transient( $transient ) {

	/**
	 * Filters the value of an existing site transient before it is retrieved.
	 *
	 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
	 *
	 * Returning a value other than boolean false will short-circuit retrieval and
	 * return that value instead.
	 *
	 * @since 2.9.0
	 * @since 4.4.0 The `$transient` parameter was added.
	 *
	 * @param mixed  $pre_site_transient The default value to return if the site transient does not exist.
	 *                                   Any value other than false will short-circuit the retrieval
	 *                                   of the transient, and return that value.
	 * @param string $transient          Transient name.
	 */
	$pre = apply_filters( "pre_site_transient_{$transient}", false, $transient );

	if ( false !== $pre ) {
		return $pre;
	}

	if ( wp_using_ext_object_cache() || wp_installing() ) {
		$value = wp_cache_get( $transient, 'site-transient' );
	} else {
		// Core transients that do not have a timeout. Listed here so querying timeouts can be avoided.
		$no_timeout       = array( 'update_core', 'update_plugins', 'update_themes' );
		$transient_option = '_site_transient_' . $transient;
		if ( ! in_array( $transient, $no_timeout, true ) ) {
			$transient_timeout = '_site_transient_timeout_' . $transient;
			$timeout           = get_site_option( $transient_timeout );
			if ( false !== $timeout && $timeout < time() ) {
				delete_site_option( $transient_option );
				delete_site_option( $transient_timeout );
				$value = false;
			}
		}

		if ( ! isset( $value ) ) {
			$value = get_site_option( $transient_option );
		}
	}

	/**
	 * Filters the value of an existing site transient.
	 *
	 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
	 *
	 * @since 2.9.0
	 * @since 4.4.0 The `$transient` parameter was added.
	 *
	 * @param mixed  $value     Value of site transient.
	 * @param string $transient Transient name.
	 */
	return apply_filters( "site_transient_{$transient}", $value, $transient );
}