Выводим на WordPress FeedBurner-счетчик текстом и без плагинов
Ранее я на блоге выкладывал небольшую функцию, которая позволяет, обходясь без плагинов, вывести на блоге количество своих фолловеров текстом. Кстати, если вы ею воспользовались, то самое время снова заглянуть на страницу той статьи (ссылка выше), поскольку я функцию обновил. Теперь выводится не просто число, а текст вида 1372 фолловера
.
Так вот, в данном посте я хочу поделиться с вами аналогичной функцией, которая выводит на WordPress-сайте количество RSS-подписчиков текстом вида 2715 подписчиков
.
Код функции
Выглядит она следующим образом:
function feedburner_counter($account) {
function plural_forms($number, $after) {
$cases = array (2, 0, 1, 1, 1, 2);
echo '<span class="count">'.$number.'</span> '.$after[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
}
$rss = get_option("feedburnercounter");
if (!isset($rss['lastcheck'])) $rss['lastcheck'] = 0;
if (!isset($rss['count'])) $rss['count'] = 0;
if (!isset($rss['account'])) $rss['account'] = '';
if ($rss['lastcheck'] < (mktime() - 3600) || $rss['account'] != $account) {
$url = 'http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='.$account;
$headers = get_headers($url);
if(strpos($headers[0], '200')) {
$xml = file_get_contents($url);
preg_match('/circulation="(\d+)"/', $xml, $match);
if ($match[1] != 0) {
$rss['count'] = $match[1];
$rss['lastcheck'] = mktime();
$rss['account'] = $account;
update_option("feedburnercounter",$rss);
}
}
}
plural_forms(
$rss['count'],
/* варианты написания для количества 1, 2 и 5 */
array('подписчик','подписчика','подписчиков')
);
}
Данный код необходимо вставить в файл functions.php вашего WordPress-шаблона.
Число 3600
– это время в секундах, через которое следует проверять количество подписчиков. В данном случае это 1 час (3600 / 60 сек = 60 мин).
Чтобы непосредственно на сайте отобразить число RSS-читателей, вставьте в соответствующее место шаблона следующий код:
<?php feedburner_counter('Dimox'); ?>
и вместо Dimox
укажите имя своего фида, т.е. то, что стоит в ссылке на ваш фид после http://feeds.feedburner.com/
.
Не забывайте активировать сервис Awareness API на вкладке “Публикуй” в настройках своего RSS-фида на сайте FeedBurner, если вы этого еще не сделали ранее.
В качестве заключения
Благодаря данной функции, можно смело отказаться от плагина “FeedBurnerCount”, который я рекомендовал ранее. Функция делает почти все то же самое, что и плагин. А самое главное, что, если FeedBurner API выдает цифру 0 (а это происходит стабильно каждый день, когда данные FeedBurner обновляются), то функция покажет не ноль, а предыдущий обновленный показатель, отличный от нуля.
P.S. В одном из следующих постов расскажу, как можно красиво с помощью CSS оформить счетчик RSS-подписчиков и Twitter-фолловеров (как на моем блоге), выведенных с помощью функций, о которых выше шла речь.
Комментарии (46)
Замечательный скриптик! Недавно набрел на твой блог: здесь есть столько всего интересного! Нашел очень много решений для своих блогов! Буду ставить :) Тебе, Dimox жму руку!
Спасибо за отзыв!
Кстати, ты не будешь против, если я позаимствую у тебя стили для счетчиков? :)
Не буду, я все равно собираюсь в одном из следующих постов про них писать.
Класс! Ты супер-человек! :)
Кстати, когда ставишь оба счетчика: подписчиков и фолловеров, работает только один из них. Тот, который идет первым. Так понимаю, нужно что-то изменить в файле functions.php ?
Все, разобрался! Заменил имена переменных: $account на $accountt и function plural_form на function plural_formm. Все заработало! Ура! :D
Да, там дело в функции plural_form, можно просто удалить ее дубликат.
Еще вопрос: знаешь почему количество подписчиков выводит “0”? У меня должно быть 3 человека. Может еще что-то подпилить следует?
Ежедневно у Гугла этот счетчик по любому фиду показывает 0, это происходит в тот момент, когда обновляются данные. Поскольку у тебя в БД еще не был занесен показатель счетчика, то, видимо, ты как раз попал на обновление данных, и в БД попал ноль.
Буду знать, спасибо! Уже счетчик обновился :)
И соц. закладки теперь хорошо видны :)
Спасибо за такую штуку, обязательно к себе попробую поставить, но только попробую, ибо я нуп еще
привет. можно ли сделать так, чтобы выводилось просто число подписчиков, без дополнения (подписчик’,’подписчика’,’подписчиков) ? если да, то как… спасибо!
Самый простой способ – удалить эти слова из функции.
Круто! До сегодняшнего дня стоял FD Feedburner Plugin, так постоянно то нуль показывал, то слетали настройки, и показывал N/А, а теперь все пучком: 124 подписчика =)
Объясните начинающему блогеру – а зачем считать подписчиков? Ведь они отображаются и так, зачем захламлять главную страницу всевозможными кнопочками и фишечками?
Ради интереса. Это такая же статистика, как и количество посещений сайта.
Привет, Dimox.
Поставил оба счетчика, спасибо за скрипт. При установке были проблемы, вылезала ошибка “URL file-access is disabled in the server configuration”. Чтобы ее убрать, создал файл php.ini с содержимым:
allow_url_include = on;
allow_url_fopen = on;
забросил его в корень блога, и поменял имя переменной $account и функцию как написано в комментариях выше. После этого, счетчики заработали. Может кому еще пригодится.
Правда, feedburner показывает “0”, но это наверное пока не обновилась база.
Что-то счетчик feedburner не работает, в коде файла function.php он идет первый, twitter считает нормально, его код прописан следом, а RSS упорно не хочет. В чем еще может быть причина ошибки?
Какая ошибка выдается?
Никакой ошибки не выдает, просто на счетчике третьи сутки значение “0”, а на сервисе feedburner, в статистике 23 подписчика. До этого был установлен плагин Simple Counters, все корректно отображалось, значит доступ к статистике feedburner открыт.
Я изменил имя переменной “$account” на “$accounte” и функцию “function plural_form” на “function plural_formm”, больше ничего не трогал. Счетчик в верхнем правом углу на сайте hudyakov.info
Я у себя протестировал ваш фид – выводится цифра 22. Поэтому, возможно, что-то неправильно делаете.
О.К., спасибо, буду копать, пока не найду ошибку.
Все заработало. Просто перенес код RSS-функции за код Twitter-функции в файле functions.php и счетчик включился. Так и не понял, почему до этого были проблемы.
От всей души спасибо Автору блога за код счетчиков! Все отлично работает.
Всех с наступающим 2012!!!
Просто и со вкусом! Спасибо за скрипт. :)
Работает как часы, Димок а как такое сделать с твиттером?
Внимательнее нужно было читать. Самая первая ссылка в статье.
Кстати, у меня возникла необходимость под формой подписки смартреспондера поставить количество подписчиков цифрой. В самом смарте есть такая возможность, только число выводиться с помощью изображений, что не совсем красиво выглядит на красивой форме. Можно ли реализовать такой счетчик подписчиков для смарта на примере этого? Спасибо!
Не знаю.
Отличная штукенция! Огромное спасибо.
А когда ориентировочно можно ждать обещаний указанных в P.S. ?
очень уж хочется теперь это все грамотно через CSS оформить, а то висит как то уныло, а опыта в этом деле нет ?((
Извиняюсь, прошлый комментарий не в ту тему написал.
Пробовал на денвере данную функцию – нормально работает.
Попробовал поставить на блог – пишет 0 подписчиков. Почему так может быть?
У FeedBurner счетчик ежедневно (видимо, при обновлении) сбрасывается на ноль. Возможно, что на это обновление и попали. Других причин не вижу.
Так в одно и тоже время пробую. На денвере все нормально, на блоге – 0
Диман или я тупой или лыжи не едут. Все вроде сделал но выдает ошибку ! Первую исправил а потом говорит что не может вызвать эту функцию че это?
plural_forms(
$rss[‘count’],
/* варианты написания для количества 1, 2 и 5 */
array(‘подписчик’,’подписчика’,’подписчиков’)
); – вот здесь была ошибка.
plural_forms(
$rss[‘count’] – ошибка исчезла но теперь функция не вызывается
/* варианты написания для количества 1, 2 и 5 */
array(‘подписчик’,’подписчика’,’подписчиков’)
);
Fatal error: Call to undefined function feedburner_counter() in /home/c/cl133496/psd-master.ru/public_html/wp-content/themes/esplanade/sidebar-top.php on line 4
Вот что пишет!
Все исправил надо было простов конец функций вставить функцию
Все хорошо, только вот google отменил поддержку awareness api https://developers.google.com/feedburner/
Как же теперь быть?
Теперь либо ручками править, либо ставить некрасивый информер. А можно вообще нафиг убрать.
Ну да, я тоже не нашел никаких вариантов в буржунете. Все советуют только на feedblitz.com переходить…
Я тоже заметила, что счетчик перестал обновляться. И так поняла, это совсем никак не исправить? Ну как нибудь придать стили некрасивому счетчику от FeedBurner? Зашла на feedblitz.com – это платный ресурс. А никаких бесплатных альтернатив не существует?
У счетчика можно только поменять цвет в настройках FeedBurner. Больше его никак не приукрасить.
Ладно, будем ручками число обновлять…. пока ещё жив FeedBurner
Не могу активировать сервис Awareness API, не могу найти. Подскажите, пожалуйста.
Статья больше не актуальна, т.к. Google закрыл API, с помощью которого можно было получить количество подписчиков.