За последние 24 часа нас посетил 24371 программист и 1676 роботов. Сейчас ищут 1916 программистов ...

Transients API и VK API

Тема в разделе "Wordpress", создана пользователем DarkSagittarius, 13 фев 2017.

  1. DarkSagittarius

    DarkSagittarius Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    32
    Симпатии:
    2
    Написал такой код для получения списка стран по апи вк:

    PHP:
    1. function get_countries( $url, $trans_name = 'countries_respose' ) {
    2.     // Проверим транзитную опцию, если её нет получим удаленных HTML
    3.     if ( false === ( $html = get_transient( $trans_name ) ) ) {
    4.         // Получаем HTML
    5.         $response = wp_remote_get( $url );
    6.  
    7.         // Проверим на ошибки
    8.         if ( is_wp_error( $response ) ) {
    9.             return;
    10.         }
    11.  
    12.         // Получим тело
    13.         $data = json_decode(wp_remote_retrieve_body( $response ));
    14.  
    15.         $data = $data->response->items;
    16.  
    17.         // Проверим на ошибки
    18.         if ( is_wp_error( $data ) ) {
    19.             return;
    20.         }
    21.  
    22.         // Запишем полученный запрос в транзитную опцию на 24 часа
    23.         set_transient( $trans_name, $data, 24 * HOUR_IN_SECONDS );
    24.     }
    25.  
    26.     return $html;
    27. }
    и на фронтенде

    PHP:
    1. $response = get_countries('https://api.vk.com/method/database.getCountries?need_all=1&count=1000&v=5.62&lang=ru', 'test2');
    2. var_dump($response);
    При первой загрузке страницы выдаёт false, затем всё хорошо. В чём проблема?
     
  2. DarkSagittarius

    DarkSagittarius Активный пользователь

    С нами с:
    1 апр 2012
    Сообщения:
    32
    Симпатии:
    2
    Вот я невнимательный какой!
    Я пытаюсь вернуть переменную, которой не существует при первом обращении
    Надо исправить так:
    PHP:
    1. $data = get_transient( $trans_name )
    и
    PHP:
    1. return $data;