Устанавливает или обновляет временные данные для сайта в сети мультисайт.
Рассчитана на использование в режиме мультисайт, когда данные нужно сохранить для всей сети сайтов, а не для отдельного сайта. Если мультисайт включен, то данные будут сохранятся в таблицу wp_sitemeta
, а не wp_options
, если нет (обычная установка), то работает также как set_transient(), только префикс ключа будет _site_transient_
вместо _transient_
.
Отличается от set_transient() тем что при сохранении в базе данных использует перфикс _site_transient_
вместо _transient_
, а также используются функции get_site_option(), update_site_option(), ..., а не get_option(), update_option(), ....
НЕ нужно сериализовать сохраняемое значение (если оно нуждается с сериализации), оно будет сериализовано автоматически.
Возвращает
true|false
.
true
- когда указанное значение установлено (сохранено).false
- когда указанное значение не удалось установить (сохранить).
Использование
set_site_transient( $transient, $value, $expiration );
- $transient(строка) (обязательный)
- Ключ. Не нужно экранировать для SQL. Должен быть короче 167 символов.
- $value(смешанный) (обязательный)
- Transient значение. Не нужно экранировать для SQL.
- $expiration(число)
- Время жизни в секундах
По умолчанию: 0 (бессрочно)
Примеры
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; }
Заметки
- Смотрите: set_transient()
Список изменений
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; }