WordPress: Настраиваемый счетчик подписчиков и фолловеров
В настоящее время существует множество бесплатных графических счетчиков и WordPress-плагинов, предназначенных для отображения количества подписчиков FeedBurner и фолловеров Twitter, однако, первые не всегда вписываются в дизайн сайта, требуют выполнять “лишние” DNS-запросы и замедляют отображение страниц браузерами, а вторые потребляют “лишние” системные ресурсы Веб-сервера. В данной статье описан один из способов избавления от перечисленных недостатков.
Как получить количество подписчиков FeedBurner и фолловеров Twitter?
Как FeedBurner, так и Twitter предоставляют разработчикам интерфейсы, позволяющие получать различную информацию о подписчиках и фолловерах. Процедура взаимодействия с перечисленными интерфейсами заключается в обращении к соответствующим URL и получении ответов в формате XML. Автор блога Zemalf.com опубликовал статью How To Show Feedburner Subscriber and Twitter Follower Counts on Your Blog, предлагающую обрабатывать эти ответы средствами PHP-расширений curl и SimpleXML, которые доступны на большинстве хостингов. Данная статья является моей интерпретацией рекомендаций финского блоггера.
Функция curl(), предназначенная для взаимодействия с интерфейсами FeedBurner и Twitter
Функция curl() предназначена для выполнения запросов к интерфейсам FeedBurner и Twitter, она используется рассмотренными ниже функциями отображения числа подписчиков и фолловеров. Код функции curl() должен быть добавлен в файл functions.php Вашей темы:
<?php
function curl($url) {
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_TIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
Функция show_subscribers_count(), отображающая количество подписчиков FeedBurner
Функция show_subscribers_count() выполняет следующие действия: проверяет, не пора ли обновить количество подписчиков FeedBurner и, если пора обновить данные, выполняет запрос к интерфейсу FeedBurner с помощью рассмотренной выше функции curl(), извлекает из ответа количество подписчиков и, если запрос количества подписчиков был выполнен без ошибок, сохраняет количество подписчиков и время обновления количества подписчиков в опциях с именами subscribers_count и subscribers_count_last_update (в строках таблицы wp-options базы данных сайта, значения поля option_name которых равны subscribers_count и subscribers_count_last_update), а затем выводит сохраненное в базе данных количество подписчиков. Такой подход обеспечивает корректное отображение количества подписчиков даже в случае ошибок при выполнении запросов и кеширование данных на заданное время для избавления от необходимости выполнения “лишних” запросов. Код функции show_subscribers_count() следует добавить в файл functions.php Вашей темы (не забудьте изменить значение $fb_id на идентификатор Вашего фида и при необходимости задать другой $update_period в секундах):
<?php
function show_subscribers_count() {
$fb_id = 'sergeysl';
$update_period = 10800;
$current_time = mktime();
if ($current_time - get_option('subscribers_count_last_update', 0) > $update_period) {
$subscribers = curl('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $fb_id);
$xml = new SimpleXmlElement($subscribers, LIBXML_NOCDATA);
$subscribers_count = (string) $xml->feed->entry['circulation'];
if ($subscribers_count) {
update_option('subscribers_count', $subscribers_count);
update_option('subscribers_count_last_update', $current_time);
}
}
echo get_option('subscribers_count');
}
?>
Теперь для отображения количества подписчиков FeedBurner можно использовать код:
<?php if(function_exists('show_subscribers_count')) show_subscribers_count(); ?>
Во избежание каких-либо недоразумений напоминаю, что для Вашего фида должен быть активирован сервис Awareness API.
Функция show_followers_count(), отображающая количество фолловеров Twitter
Функция show_followers_count() является аналогом рассмотренной выше функции show_subscribers_count(). Отличия заключаются в других форматах запроса и ответа, а также в использовании других опций для сохранения количества фолловеров и времени обновления количества фолловеров. Код функции show_subscribers_count() нужно добавить в файл functions.php Вашей темы (не забудьте изменить значение $twitter_id на имя Вашего аккаунта Twitter и при необходимости задать другой $update_period в секундах):
<?php
function show_followers_count() {
$twitter_id = 'sergeysl';
$update_period = 10800;
$current_time = mktime();
if ($current_time - get_option('followers_count_last_update', 0) > $update_period) {
$followers = curl('http://twitter.com/users/show.xml?screen_name=' . $twitter_id);
$xml = new SimpleXmlElement($followers, LIBXML_NOCDATA);
$followers_count = (string) $xml->followers_count;
if ($followers_count) {
update_option('followers_count', $followers_count);
update_option('followers_count_last_update', $current_time);
}
}
echo get_option('followers_count');
}
?>
Теперь для отображения количества фолловеров Twitter можно использовать код:
<?php if(function_exists('show_followers_count')) show_followers_count(); ?>
Заключение
Добавление перечисленных функций позволит Вам выбрать абсолютно любой дизайн для счетчиков подписчиков FeedBurner и фолловеров Twitter, при этом счетчики будут работать гораздо быстрее бесплатных графических аналогов и не вызовут заметное увеличение нагрузки на Веб-сервер. Дополнительным плюсом предложенного решения является уменьшение количества претензий к Вашему сайту со стороны теста Minimize DNS lookups, выполняемого Google Page Speed.

Только собрался писать такую же статью, а Вы меня опередили уже
Обойдусь тогда ссылкой на этот пост в следующем своём посте в разделе интересных ссылок 
P.S. Приведенный Вами метод гораздо проще и удобнее, чем тот, который использую я – пошёл опять копаться
Пользуйтесь на здоровье, заранее спасибо за ссылку
Здравствуйте!
Вы извините, что я пишу здесь, но мне очень надо найти ответ на свой вопрос, на который Вы мне отвечали в теме Шакина Безопасность Wordpress – часть 1 по поводу трэкбэков. Вы мне советовали их отключать плагином. А нельзя ли ими как-то воспользоваться и не отключать. Меня вот этот вопрос интересует.
Заранее благодарю за ответ!
Доброе утро!
Пользоваться можно, но неудобно. Сам пытался блокировать одного любителя отправки таких трекбеков в
.htaccess, не помогло. Из обсуждения на блоге автора Disable Trackbacks понял, что существует плагин WP-Ban, в котором можно блокировать конкретную активность с конкретных адресов, т.е. пришел нехороший трекбек от СПАМера, добавили его IP-адрес куда нужно, больше от него же не придет. Мне не понравилось то, что придется постоянно корректировать список IP-адресов вручную. Я не стал подробно вникать в проблему, просто отключил трекбеки, появление СПАМа прекратилось, а я успокоился.Статья хорошая, несомненно большой + для вебмастера. Интересно, функция
show_followers_count(), отображающая количество фолловеров Twitter, работает на всех версиях?Из всех возможностей WordPress используется только хранение цифр в базе данных, поэтому обе функции должны работать на всех версиях WordPress. Если переделать хранение цифр в базе данных под имеющиеся средства, то остальной код подойдет для любого сайта на PHP.
Спасибо, очень интересная заметка.
На здоровье.
А можно таким же образом прицепить голоса от диггера?
Я думаю, что можно прицепить любой сервис, имеющий соответствующий API.
ОГРОМНОЕ спасибо. поставил себе.
Пользуйтесь на здоровье