Создаем твиттер-счетчик подписчиков
4 ноября 2010 года | Web, Программирование

В данный момент микроблоги захватывают мир, даже контакт на него переехал. Но речь сегодня о твиттере и о читателях. Многим хотелось бы вывести на сайте количество подписчиков. Для этого все ищут особые плагины, которые только нагружают систему.
Я хочу показать способ, который буквально в «20 строк» решит вашу проблему, и поможет сделать вывод количества читателей с твиттера.
Чтобы понять, о чем речь, посмотрите на правый верхний блок моего блога, там отображено количество подписчиков в ссылке на твиттер. На момент написания статьи присутствует вот такая фраза: «319 твиттер-читателей».
Краткий обзор содержимого
Для нашего задания нужно написать три небольших функции:
- Получить количество подписчиков и сохранить в БД;
- Получать данные из базы по запросу;
- Периодически обновлять показатель (в нашем случае один раз в час).
Данные хранить будем у себя в базе, и раз в час обращаться за информацией. Чаще не получится, так как твиттер прикрывает частые обращения. Да и смысла нет, не столь важная цифра.
Этап первый: получить количество подписчиков из твиттера
Существует возможность получить XML-файл с полной информацией о вашем профиле с сайта твиттера, используя API, которое любезно предоставляет твиттер.
Вот наглядный пример запроса: http://api.twitter.com/1/users/show.xml?screen_name=YOURNAMEHERE, где вместо YOURNAMEHERE поставляете ваш ник в системе. Вот ссылочка на мой профиль.
Теперь, когда знаем, что получить информацию не так сложно, перейдем к программной части. Многие используют WordPress для своих блогов, поэтому именно для него и сделаем наш счетчик.
Найдите файл functions.php в папке с вашей текущей активной темой. Перемещаемся в самый конец, напомню, нам нужно получить количество подписчиков и сохранить информацию в БД.
$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 создаст в нашей БД новую запись с таким названием. А если такая уже есть, то ничего не произойдет.
И последний момент, заносим или изменяем на новое значение количества наших подписчиков.
Этап второй: возвращаем значение из базы
Этот этап самый короткий. Нам нужно написать функцию, которая будет брать значение из БД и возвращать количество в том месте кода, в котором его вызвали.
Вот и сам код функции:
echo get_option('tb_twitter_followers');
}
Скопируйте этот код и вставьте сразу после первой функции.
Третий этап: почасовое обновление показателя
Чтобы данные всегда были актуальными, нам нужно получать информацию, и желательно автоматически. С этим в wordpress не должно быть проблем, так как такая возможность есть.
Для этого мы будем использовать wordpress cron, который и будет автоматически запускаться и обновлять нашу информацию каждый час.
Вот нужные нам строки:
wp_schedule_event(time(), 'hourly', 'your_hourly_hook');
}
add_action('your_hourly_hook', 'update_twitter_count');
Первыми тремя строчками мы создаем свой хук. А с помощью add_action указываем какую функцию этот хук будет запускать каждый час. Также добавьте этот код в конце файла.
Подробнее о хуках можно узнать, прочитав официальную документацию.
Четвертый этап: вывод на страницу
С программной частью мы закончили, теперь нужно позаботиться о выводе. Для этого в нужном нам месте (в моем случае это боковая панель из файла sidebar.php), вставляем вот такой кусок кода:
А теперь важное дополнение:
После того как вы вставите код в ваши файлы на экране сайта сразу ничего не увидите, нужно будет ждать целый час.
И чтобы не ждать, а увидеть результат сразу, нужно самим один раз сделать запуск нашей функции.
Для этого в конец файла function.php допишите строку:
update_twitter_count();После чего обновите страницу, и можно эту строку убирать, так как через час информация уже сама обновится.
Вот так вот несложно можем получить полезную информацию, и при этом автоматически её обновлять.
Жду от вас вопросов и комментариев.
- http://twitter.com/natio2 natio2
- divbyzero
