Установка временных значений на сайте с set_site_transient() – руководство

## Установка временных значений сайта с помощью функции SET_SITE_TRANSIENT()

Функция set_site_transient() позволяет устанавливать и обновлять временные значения на сайте WordPress. Временные значения — это данные, которые хранятся на сервере ненадолго, и их можно использовать для временного кэширования информации.

### Основные моменты

- **Не нужно сериализовать значения**: Если значение требует сериализации (преобразования в строку), то это происходит автоматически, прежде чем значение будет установлено.
- **Основные функции, которые используют set_site_transient()**: Например, используется в функции wp_check_browser_version().

### Хуки, связанные с функцией

- pre_set_site_transient_(transient) — вызывается перед установкой значения временного значения.
- expiration_of_site_transient_(transient) — вы��ывается при определении времени истечения временного значения.
- set_site_transient_(transient) — вызывается после успешной установки временного значения.
- setted_site_transient — вызывается после установки временного значения.

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

Функция возвращает true, если значение успешно установлено, и false, если нет.

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

```php
set_site_transient( $transient, $value, $expiration );
  • $transient (string) — название временного значения. Должно быть длиной не более 167 символов и не должно содержать SQL-запросов.
  • $value (mixed) — значение временного значения. Также не должно содержать SQL-запросов.
  • $expiration (int) — время до истечения в секундах. По умолчанию: 0 (без истечения).

Пояснение кода функции

Функция находится в файле wp-includes/option.php. Вот упрощённая версия того, как она работает:

function set_site_transient( $transient, $value, $expiration = 0 ) {
    $value = apply_filters( "pre_set_site_transient_{$transient}", $value, $transient );
    $expiration = (int) $expiration;

    $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;
        wp_prime_site_option_caches( array( $option, $transient_timeout ) );

        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 ) {
        do_action( "set_site_transient_{$transient}", $value, $expiration, $transient );
        do_action( 'setted_site_transient', $transient, $value, $expiration );
    }

    return $result;
}

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

  • _transient (опции)
  • delete_expired_transients() — удаляет устаревшие временные значения.
  • delete_transient() — удаляет указанное временное значение.
  • get_site_transient() — получает значение временного значения сайта.
  • get_transient() — получает указанное временное значение.
  • set_transient() — устанавливает временное значение.

Итоги

Функция set_site_transient() очень полезна для оптимизации работы сайта, так как позволяет кэшировать данные на время, избегая повторных запросов к базе данных. Используйте её для установки временных значений, которые могут быть полезны для вашего сайта.

Leave a Reply

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