Главная WordPress

Выводим на WordPress FeedBurner-счетчик текстом и без плагинов

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)

  1. Замечательный скриптик! Недавно набрел на твой блог: здесь есть столько всего интересного! Нашел очень много решений для своих блогов! Буду ставить :) Тебе, Dimox жму руку!

  2. Спасибо за такую штуку, обязательно к себе попробую поставить, но только попробую, ибо я нуп еще

  3. привет. можно ли сделать так, чтобы выводилось просто число подписчиков, без дополнения (подписчик’,’подписчика’,’подписчиков) ? если да, то как… спасибо!

  4. Круто! До сегодняшнего дня стоял FD Feedburner Plugin, так постоянно то нуль показывал, то слетали настройки, и показывал N/А, а теперь все пучком: 124 подписчика =)

  5. Объясните начинающему блогеру – а зачем считать подписчиков? Ведь они отображаются и так, зачем захламлять главную страницу всевозможными кнопочками и фишечками?

  6. Привет, Dimox.

    Поставил оба счетчика, спасибо за скрипт. При установке были проблемы, вылезала ошибка “URL file-access is disabled in the server configuration”. Чтобы ее убрать, создал файл php.ini с содержимым:

    allow_url_include = on;
    allow_url_fopen = on;

    забросил его в корень блога, и поменял имя переменной $account и функцию как написано в комментариях выше. После этого, счетчики заработали. Может кому еще пригодится.

    Правда, feedburner показывает “0”, но это наверное пока не обновилась база.

  7. Что-то счетчик feedburner не работает, в коде файла function.php он идет первый, twitter считает нормально, его код прописан следом, а RSS упорно не хочет. В чем еще может быть причина ошибки?

  8. От всей души спасибо Автору блога за код счетчиков! Все отлично работает.
    Всех с наступающим 2012!!!

  9. Просто и со вкусом! Спасибо за скрипт. :)

  10. Работает как часы, Димок а как такое сделать с твиттером?

  11. Кстати, у меня возникла необходимость под формой подписки смартреспондера поставить количество подписчиков цифрой. В самом смарте есть такая возможность, только число выводиться с помощью изображений, что не совсем красиво выглядит на красивой форме. Можно ли реализовать такой счетчик подписчиков для смарта на примере этого? Спасибо!

  12. Отличная штукенция! Огромное спасибо.

    А когда ориентировочно можно ждать обещаний указанных в P.S. ?

    В одном из следующих постов расскажу, как можно красиво с помощью CSS оформить счетчик RSS-подписчиков и Twitter-фолловеров (как на моем блоге), выведенных с помощью функций, о которых выше шла речь.

    очень уж хочется теперь это все грамотно через CSS оформить, а то висит как то уныло, а опыта в этом деле нет ?((

  13. Извиняюсь, прошлый комментарий не в ту тему написал.
    Пробовал на денвере данную функцию – нормально работает.
    Попробовал поставить на блог – пишет 0 подписчиков. Почему так может быть?

  14. Диман или я тупой или лыжи не едут. Все вроде сделал но выдает ошибку ! Первую исправил а потом говорит что не может вызвать эту функцию че это?

  15. plural_forms(
    $rss[‘count’],
    /* варианты написания для количества 1, 2 и 5 */
    array(‘подписчик’,’подписчика’,’подписчиков’)
    ); – вот здесь была ошибка.

    plural_forms(
    $rss[‘count’] – ошибка исчезла но теперь функция не вызывается
    /* варианты написания для количества 1, 2 и 5 */
    array(‘подписчик’,’подписчика’,’подписчиков’)
    );

  16. 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
    Вот что пишет!

  17. Все исправил надо было простов конец функций вставить функцию

  18. Все хорошо, только вот google отменил поддержку awareness api https://developers.google.com/feedburner/

    Как же теперь быть?

  19. Не могу активировать сервис Awareness API, не могу найти. Подскажите, пожалуйста.