Как использовать GET_SITE_TRANSIENT() для получения временного сайта

Получение ��ременного сайта с помощью GET_SITE_TRANSIENT()

Функция GET_SITE_TRANSIENT() позволяет получать значение временного хранилища (транзиента) для сайта на платформе WordPress.

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

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

  • pre_site_transient_(transient)
  • site_transient_(transient)

Возвращаемое значение

Значение типа Mixed. Это значение временного хранилища.

Применение

Для получения временного хранилища используется следующая функция:

get_site_transient( $transient );
  • $transient (строка) (обязательный параметр) — имя временного хранилища. Оно не должно содержать символов, предназначенных для SQL.

Примеры

Пример 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 );
}

Заметки

  • Подробнее о функции get_transient() можно прочитать в документации WordPress.

Изменения

  • С версии 2.9.0 — функция была введена.

Код функции GET_SITE_TRANSIENT()

function get_site_transient( $transient ) {
    /**
     * Фильтрует значение существующего временного хранилища перед его получением.
     *
     * Динамическая часть имени хуков — $transient, относится к названию временного хранилища.
     *
     * Возвращение значения, отличного от false, прервет процесс получения и вернет это значение.
     *
     * @since 2.9.0
     * @since 4.4.0 Параметр $transient был добавлен.
     *
     * @param mixed  $pre_site_transient Значение по умолчанию, если временное хранилище не существует.
     *                                   Любое значение, кроме false, приведет к прекращению получения.
     * @param string $transient          Имя временного хранилища.
     */
    $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 {
        // Основные транзиенты, не имеющие времени жизни.
        $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;
            wp_prime_site_option_caches( array( $transient_option, $transient_timeout ) );

            $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 );
        }
    }

    /**
     * Фильтрует значение существующего временного хранилища.
     *
     * Динамическая часть имени хуков — $transient, относится к названию временного хранилища.
     *
     * @since 2.9.0
     * @since 4.4.0 Параметр $transient был добавлен.
     *
     * @param mixed  $value     Значение временного хранилища.
     * @param string $transient Имя временного хранилища.
     */
    return apply_filters( "site_transient_{$transient}", $value, $transient );
}

Связанные функции

  • delete_expired_transients()
  • delete_transient()
  • get_transient()
  • set_site_transient()
  • set_transient()

Эти функции помогают работать с временными хранилищами, добавляя, удаляя и получая данные.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *