WordPress Twitter API 1.1

Как получить и вывести в WordPress количество фолловеров Твиттера

21 апреля 2014 66

Скоро будет уже год с момента введения в Твиттере API 1.1, но по сей день многие недоумевают почему отвалились все их старые сниппеты и скрипты Твиттера.

ThemeForest: Лучшие темы для WordPress
ThemeForest: Лучшие темы для WordPress

Да все просто, после перехода на API 1.1 для всех без исключения скриптов необходима аутентификация OAuth 2.0, которая раньше была не нужна. Сегодня я покажу на рабочем примере как используя новые методы API можно вывести количество ваших фолловеров в Твиттере на любой странице вашего шаблона WordPress.

  1. В первую очередь идем на страницу разработчиков https://dev.twitter.com/apps и авторизуемся под своей учетной записью.
  2. Создаем новое приложение.
  3. Заполняем все обязательные поля формы.
  4. На странице созданного приложения необходимо создать токены доступа, которые, собственно, и будут нужны для последующей аутентификации нашего скрипта.

WordPress Twitter Followers Counter

Теперь у вас есть все ключи для аутентификации. Однако для работы скрипта вам понадобится только API key и API secret. Замените в коде YOUR_CONSUMER_KEY на ваш API key, а YOUR_CONSUMER_SECRET — на API secret. Код необходимо вставить в файл functions.php вашей активной темы. Код подробно прокомментировать и вы без особого труда можете его модифицировать под свои нужды.

function getTwitterFollowers($screenName = 'codeforest')
{
    // some variables
    $consumerKey = 'YOUR_CONSUMER_KEY';
    $consumerSecret = 'YOUR_CONSUMER_SECRET';
    $token = get_option('cfTwitterToken');
 
    // get follower count from cache
    $numberOfFollowers = get_transient('cfTwitterFollowers');
 
    // cache version does not exist or expired
    if (false === $numberOfFollowers) {
        // getting new auth bearer only if we don't have one
        if(!$token) {
            // preparing credentials
            $credentials = $consumerKey . ':' . $consumerSecret;
            $toSend = base64_encode($credentials);
 
            // http post arguments
            $args = array(
                'method' => 'POST',
                'httpversion' => '1.1',
                'blocking' => true,
                'headers' => array(
                    'Authorization' => 'Basic ' . $toSend,
                    'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8'
                ),
                'body' => array( 'grant_type' => 'client_credentials' )
            );
 
            add_filter('https_ssl_verify', '__return_false');
            $response = wp_remote_post('https://api.twitter.com/oauth2/token', $args);
 
            $keys = json_decode(wp_remote_retrieve_body($response));
 
            if($keys) {
                // saving token to wp_options table
                update_option('cfTwitterToken', $keys->access_token);
                $token = $keys->access_token;
            }
        }
        // we have bearer token wether we obtained it from API or from options
        $args = array(
            'httpversion' => '1.1',
            'blocking' => true,
            'headers' => array(
                'Authorization' => "Bearer $token"
            )
        );
 
        add_filter('https_ssl_verify', '__return_false');
        $api_url = "https://api.twitter.com/1.1/users/show.json?screen_name=$screenName";
        $response = wp_remote_get($api_url, $args);
 
        if (!is_wp_error($response)) {
            $followers = json_decode(wp_remote_retrieve_body($response));
            $numberOfFollowers = $followers->followers_count;
        } else {
            // get old value and break
            $numberOfFollowers = get_option('cfNumberOfFollowers');
            // uncomment below to debug
            //die($response->get_error_message());
        }
 
        // cache for an hour
        set_transient('cfTwitterFollowers', $numberOfFollowers, 1*60*60);
        update_option('cfNumberOfFollowers', $numberOfFollowers);
    }
 
    return $numberOfFollowers;
}

Вот и все. Выводить количество ваших фолловеров вы можете обратившись к функции getTwitterFollowers в любом месте вашего шаблона.

echo getTwitterFollowers('your_screen_name');

Надеюсь пригодится.

Фото: Garrett Heath — Creative Commons / flickr.com

Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе WordPress.

Комментарии

Разгоните свой WordPress

Хостинг-провайдер номер один в России — REG.RU

Подробнее