В правом сайдбаре этого блога теперь висит моя “визитная карточка”, на которой отображается количество моих читателей в Twitter. В этой небольшой заметке я поделюсь способом, как это можно реализовать.
Полгода назад твиттер представил новую версию Twitter API 1.1, вместе с которым вступили в силу новые правила игры. Теперь ни один метод не может быть вызван без аутентификации, для которой теперь используется протокол OAuth 2.0.
Создание Twitter-приложения
Первый шаг для подключения счетчика фолловеров – создание Твиттер-приложения и получение пользовательских ключей, которые требуются для проведения OAuth 2.0 аутентификации. Для этого:
-
Перейдите по ссылке https://dev.twitter.com/apps и войдите с данными своего Твиттер-аккаунта;
-
Создайте новое приложение (application)
-
Заполните поля в форме и создайте свое приложение
-
На странице приложения кликните “Create my access token”
Теперь у вас есть ключи. Однако, для нашего счетчика понадобятся только Consumer key и Consumer secret
Получение количества читателей в Twitter
Код ниже используется для получения количества читателей в Twitter для использования на сайте WordPress, однако, желающие могут легко его преобразовать для своих нужд. Он хорошо прокомментирован и должен располагаться в файле functions.php в папке вашей темы. Естественно, в него нужно только подставить ваши значения Consumer key и Consumer secret.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
function getTwitterFollowers($screenName = 'codeforest') { // некоторые переменные $consumerKey = 'ВАШ_CONSUMER_KEY'; $consumerSecret = 'ВАШ_CONSUMER_SECRET'; $token = get_option('cfTwitterToken'); // получить число фолловеров из кеша $numberOfFollowers = get_transient('cfTwitterFollowers'); // кешированная версия не существует или устарела if (false === $numberOfFollowers) { // getting new auth bearer only if we don't have one if(!$token) { // подготовка данных $credentials = $consumerKey . ':' . $consumerSecret; $toSend = base64_encode($credentials); // аргументы http post $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) { // сохранение токера в таблице wp_options update_option('cfTwitterToken', $keys->access_token); $token = $keys->access_token; } } // мы должны предъявить токен откуда бы мы его не получили $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 { // получить старое значение и выйти $numberOfFollowers = get_option('cfNumberOfFollowers'); // раскомментировать для дебага //die($response->get_error_message()); } // кэш на один час set_transient('cfTwitterFollowers', $numberOfFollowers, 1*60*60); update_option('cfNumberOfFollowers', $numberOfFollowers); } return $numberOfFollowers; } |
Для вызова этой функции в шаблоне достаточно использовать
1 |
echo getTwitterFollowers('your_screen_name'); |
Теперь можно без труда добавлять отображение счетчика фолловеров в Твиттере в любое место на сайте.
Полезная статья? Их будет больше, если вы поддержите меня!