GET_TRANSIENT() │ WP 2.8.0
Функция get_transient()
позволяет получить значение временной опции (transient), которая используется для хранения временных данных.
Что такое transient?
Transient — это временная опция, которую можно использовать для хранения данных, которые не нужно сохранять на постоянной основе. Это удобно, если у вас есть данные, которые часто меняются, и которые вы не хотите загружать каждый раз из базы данных.
Если на сайте включено кэширование объектов, значение transient будет получено не из таблицы wp_options
, а из кэша, что ускоряет доступ к данным.
На мультисайтах транзиенты извлекаются из настроек текущего сайта или блога.
Для установки или получения временной опции главного сайта используйте функции set_site_transient()
или get_site_transient()
соответственно.
Хуки функции
pre_transient_(transient)
— срабатывает перед получением transient.transient_(transient)
— срабатывает при получении transient.
Возвращаемое значение
Функция возвращает разные значения:
- false — если:
- transient не существует,
- transient не имеет значения,
- срок действия transient истек.
- В противном случае возвращается значение transient.
Важно!
Проверяйте возвращаемое значение на строгое равенство с помощью оператора ===
, а не с помощью обычного равенства ==
. Это важно, потому что значение может быть 0, пустой строкой или пустым массивом. Поэтому, если вы хотите сохранить состояние, используйте 0 вместо false или помещайте false в массив.
Использование
get_transient( $transient );
- $transient (string) (обязательно) — имя transient, которое не должно быть экранировано SQL.
Примеры
Сохранение текущего запроса в transient
Следующий пример показывает, как использовать get_transient()
и set_transient()
с WP_Query для сохранения текущего запроса в transient. Это может пригодиться, чтобы сохранить "тяжелые" запросы.
// Получаем значение transient
$special_query_results = get_transient( 'special_query_results' );
if ( false === $special_query_results ) {
// Если transient пуст, добавляем его
$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 — была введена функция.
Код функции
function get_transient( $transient ) {
$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() ) {
$alloptions = wp_load_alloptions();
if ( ! isset( $alloptions[ $transient_option ] ) ) {
$transient_timeout = '_transient_timeout_' . $transient;
wp_prime_option_caches( array( $transient_option, $transient_timeout ) );
$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 );
}
}
return apply_filters( "transient_{$transient}", $value, $transient );
}
Связанные функции
_transient (OPTIONS)
— помогает управлять временными опциями.delete_expired_transients()
— удаляет устаревшие transient.delete_transient()
— удаляет конкретный transient.get_site_transient()
— получает transient сайта.set_site_transient()
— устанавливает transient сайта.set_transient()
— устанавливает transient.