Создаем твиттер-счетчик подписчиков

4 ноября 2010 года | Web, Программирование

счетчик подписчиков твиттера

В данный момент микроблоги захватывают мир, даже контакт на него переехал. Но речь сегодня о твиттере и о читателях. Многим хотелось бы вывести на сайте количество подписчиков. Для этого все ищут особые плагины, которые только нагружают систему.

Я хочу показать способ, который буквально в «20 строк» решит вашу проблему, и поможет сделать вывод количества читателей с твиттера.

Чтобы понять, о чем речь, посмотрите на правый верхний блок моего блога, там отображено количество подписчиков в ссылке на твиттер. На момент написания статьи присутствует вот такая фраза: «319 твиттер-читателей».

Краткий обзор содержимого

Для нашего задания нужно написать три небольших функции:

  • Получить количество подписчиков и сохранить в БД;
  • Получать данные из базы по запросу;
  • Периодически обновлять показатель (в нашем случае один раз в час).

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

Этап первый: получить количество подписчиков из твиттера

Существует возможность получить XML-файл с полной информацией о вашем профиле с сайта твиттера, используя API, которое любезно предоставляет твиттер.

Вот наглядный пример запроса: http://api.twitter.com/1/users/show.xml?screen_name=YOURNAMEHERE, где вместо YOURNAMEHERE поставляете ваш ник в системе. Вот ссылочка на мой профиль.

Теперь, когда знаем, что получить информацию не так сложно, перейдем к программной части. Многие используют WordPress для своих блогов, поэтому именно для него и сделаем наш счетчик.
Найдите файл functions.php в папке с вашей текущей активной темой. Перемещаемся в самый конец, напомню, нам нужно получить количество подписчиков и сохранить информацию в БД.

function update_twitter_count() {

  $name = 'freedivbyzero';
  $url = 'http://api.twitter.com/1/users/show.xml?screen_name='. $name;

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_URL, $url);
  $data = curl_exec($ch);
  curl_close($ch);

  $xml = new SimpleXMLElement($data);
  $count = $xml->followers_count;

  $count = (float) $count;
  $count = number_format($count, 0, ',', ' ');

  add_option('twitter_followers');
  update_option('twitter_followers', $count);
}

Теперь подробнее о каждой строке.

Создаем функцию update_twitter_count, которую в последствии и будем вызывать для обновления данных. В первой же строке замените мой ник, на свой в переменной $name, чтобы получать вашу информацию.

В следующей строке мы формируем ссылку на xml-файл с нашими данными. Пять строк далее получают эту информацию с сервера твиттера.

Затем две строки дают возможность получить нужное нам число в переменную $count. Теперь приведем нашу переменную из текста в число. И сделаем красивого формата используя функцию number_format, с разделением на тысячи. То есть, если у нас, например 23145 подписчиков, то в результате будет число в формате 23 145. Так наглядней и приятней смотрится, чем куча цифр.

Следующая строка add_option создаст в нашей БД новую запись с таким названием. А если такая уже есть, то ничего не произойдет.

И последний момент, заносим или изменяем на новое значение количества наших подписчиков.

Этап второй: возвращаем значение из базы

Этот этап самый короткий. Нам нужно написать функцию, которая будет брать значение из БД и возвращать количество в том месте кода, в котором его вызвали.

Вот и сам код функции:

function twitter_count() {
  echo get_option('tb_twitter_followers');
}

Скопируйте этот код и вставьте сразу после первой функции.

Третий этап: почасовое обновление показателя

Чтобы данные всегда были актуальными, нам нужно получать информацию, и желательно автоматически. С этим в wordpress не должно быть проблем, так как такая возможность есть.

Для этого мы будем использовать wordpress cron, который и будет автоматически запускаться и обновлять нашу информацию каждый час.

Вот нужные нам строки:

if (!wp_next_scheduled('your_hourly_hook')) {
  wp_schedule_event(time(), 'hourly', 'your_hourly_hook');
}
add_action('your_hourly_hook', 'update_twitter_count');

Первыми тремя строчками мы создаем свой хук. А с помощью add_action указываем какую функцию этот хук будет запускать каждый час. Также добавьте этот код в конце файла.

Подробнее о хуках можно узнать, прочитав официальную документацию.

Четвертый этап: вывод на страницу

С программной частью мы закончили, теперь нужно позаботиться о выводе. Для этого в нужном нам месте (в моем случае это боковая панель из файла sidebar.php), вставляем вот такой кусок кода:

<a href="http://twitter.com/freedivbyzero"><?php twitter_count(); ?> читателей</a>

А теперь важное дополнение:

После того как вы вставите код в ваши файлы на экране сайта сразу ничего не увидите, нужно будет ждать целый час.

И чтобы не ждать, а увидеть результат сразу, нужно самим один раз сделать запуск нашей функции.

Для этого в конец файла function.php допишите строку:

update_twitter_count();

После чего обновите страницу, и можно эту строку убирать, так как через час информация уже сама обновится.

Вот так вот несложно можем получить полезную информацию, и при этом автоматически её обновлять.

Жду от вас вопросов и комментариев.

  • http://twitter.com/natio2 natio2

    Тема, не нужно ставить непонятные счетчики от сервисов генерящих тонну кода и постоянно «ожидать» ответ от их сервака :-)

  • divbyzero

    Минусом можно считать только то, что всё самому надо прописывать. не для ленивых =)