WordPress transient не использует временные данные

26 авг. 2020 г., 23:21:40
Просмотры: 187
Голосов: 1

Я новичок в работе с transients, но вроде понимаю их логику.

У меня есть блог, и я получаю посты через API с другого своего блога.

Теперь я хочу сохранить данные в transient, чтобы не делать запрос при каждом посещении страницы.

Вот мой код:

if (false === ($posts === get_transient('posts_array'))) {

    $response = wp_remote_get( 'https://website.com/blog/wp-json/wp/v2/posts?per_page=5&_embed' );
    // Выходим при ошибке
    if ( is_wp_error( $response ) ) {
        return;
    }
        
    $posts[] = json_decode( wp_remote_retrieve_body( $response ) );

    set_transient('posts_array', $posts, DAY_IN_SECONDS);
}

По какой-то причине мой WordPress не использует transients - кажется, что он всегда делает запрос к API для получения $posts. Нужно ли мне где-то явно присваивать $posts значение из get_transient, если оно существует?

0
Все ответы на вопрос 1
0

Я имею в виду, что ваш код неверен в первой строке, сравнение выполнено неправильно. Переменная $post должна хранить = данные запроса через get_transient(), а не сравнивать их ===.

Поэтому вам следует заменить на:

if ( false === ( $posts = get_transient('posts_array') ) ) {
    // этот код выполняется, если нет установленного валидного транзиента
}
27 авг. 2020 г. 10:31:16