get_transient()WP 2.8.0

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

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

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

Чтобы писать их в опции главного сайта используйте: set_site_transient() или get_site_transient().

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

Возвращает

Разное.

  • false

    • если временной опции не существует.
    • или она имеет пустое значение.
    • или она просрочена.
  • значение опции — когда удалось получить значение.

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

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

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

Примеры

0

#1 Пример сохранения запроса

Этот пример показывает как использовать get_transient(), set_transient() вместе с WP_Query, чтобы сохранить результат запроса во временную опцию.

Это может пригодится, для облегчения тяжелых запросов, мы можем их кэшировать с помощью get_transient, set_transient:

// Получим существующие данные
$special_query_results = get_transient( 'special_query_results' );

if ( false === $special_query_results ) {

	// Данные получить не удалось, поэтому, создадим их и сохраним
	$special_query_results = new WP_Query( 'cat=5&order=random&tag=tech&post_meta_key=thumbnail' );
	set_transient( 'special_query_results', $special_query_results );
}

// Используем $special_query_results как обычно...

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

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

Код get_transient() WP 6.4.3

function get_transient( $transient ) {

	/**
	 * Filters the value of an existing transient before it is retrieved.
	 *
	 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
	 *
	 * Returning a value other than false from the filter will short-circuit retrieval
	 * and return that value instead.
	 *
	 * @since 2.8.0
	 * @since 4.4.0 The `$transient` parameter was added
	 *
	 * @param mixed  $pre_transient The default value to return if the 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_transient_{$transient}", false, $transient );

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

	if ( wp_using_ext_object_cache() || wp_installing() ) {
		$value = wp_cache_get( $transient, 'transient' );
	} else {
		$transient_option = '_transient_' . $transient;
		if ( ! wp_installing() ) {
			// If option is not in alloptions, it is not autoloaded and thus has a timeout.
			$alloptions = wp_load_alloptions();
			if ( ! isset( $alloptions[ $transient_option ] ) ) {
				$transient_timeout = '_transient_timeout_' . $transient;
				$timeout           = get_option( $transient_timeout );
				if ( false !== $timeout && $timeout < time() ) {
					delete_option( $transient_option );
					delete_option( $transient_timeout );
					$value = false;
				}
			}
		}

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

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