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

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

21 апреля 2014

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

Топ 10 продающих лендингов для Вордпресс

Да все просто, после перехода на 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

Всё самое новое и интересное я публикую в своём Телеграм-канале. Подписывайтесь!

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

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

Добавить комментарий

Лучшие премиум-темы для Вордпресс
Подробнее