Добавляем кнопку ReTweet в RSS-ленту без плагинов

Последнее обновление поста: 4 июля. Для WordPress версий 2.9 и выше добавлен более простой и практичный способ добавления кнопки retweet в RSS-ленту блога. Для версий ниже 2.9 исправлен код, имя файлов и названия функций, в которых необходимо производить изменения.

Вчера я поставил в свою RSS-ленту FeedBurner кнопку retweet, где вы можете проверить её работу, и сейчас объясню как это делается. Возьму в пример сервис TweetMeme и их код, так как большинство блогеров пользуются именно этим сервисом для установки кнопки retweet. Хотя в ходу и другие кнопки, но думаю, там не составит труда по данному примеру вставить желаемую кнопку. Итак, начнем.

"Новый" способ для WordPress версий 2.9 и выше

Здесь я вам предложу очень простой способ добавления кнопки retweet в RSS-ленту блога. Вам всего лишь необходимо в файл functions.php вашей темы, которая находится в папке /wp-content/themes/ВАША_ТЕМА/ перед строкой

?>

добавить следующие строки:

function twin_retweet_rss($content) {
   $button = '<div style="float:right;"><a href="http://api.tweetmeme.com/share?url=' . get_permalink() . '"><img src="http://api.tweetmeme.com/imagebutton.gif?url=' . get_permalink() . '" height="61" width="51" /></a></div>';
   $content = $button . $content;
   return $content;
}
add_filter('the_excerpt_rss', 'twin_retweet_rss');
add_filter('the_content_feed', 'twin_retweet_rss');

Здесь вы можете увидеть, что в коде используется функция, с помощью которой соответственно вставляется кнопка retweet в RSS-ленту блога и два фильтра, которые применяют функцию к тексту ленты. Вот и весь секрет. 😉

ВНИМАНИЕ! Использование данного способа в версиях WordPress ниже 2.9 не рекомендуется. При попытке добавления фильтров в версиях 2.3.3 и 2.6.2 RSS-ленты рушились и больше не работали.

"Старый" способ для WordPress ниже версии 2.9

1. Находим файл feed.php в папке wp-includes и открываем его любым текстовым редактором. Ищем в этом файле функцию the_content_rss. В ней находим строку:

echo $content;

Вместо этой строки добавляем две следующие строчки:

$button = '<div style="float:right;"><a href="http://api.tweetmeme.com/share?url=' . get_permalink() . '"><img src="http://api.tweetmeme.com/imagebutton.gif?url=' . get_permalink() . '" height="61" width="51" /></a></div>';
echo $button . $content;

Сохраняем файл feed.php.

2. Находим файл feed-rss2.php всё в той же папке wp-includes и открываем его любым текстовым редактором. Ищем в этом файле строку:

<content:encoded><![CDATA[<?php the_content() ?>]]></content:encoded>

Вместо этой строки вставляем следующую строку:

<content:encoded><![CDATA[<div style="float:right;"><a href="http://api.tweetmeme.com/share?url=<?php the_permalink_rss() ?>"><img src="http://api.tweetmeme.com/imagebutton.gif?url=<?php the_permalink_rss() ?>" height="61" width="51" /></a></div><?php the_content() ?>]]></content:encoded>

Сохраняем файл feed-rss2.php.

3. Теперь необходимо зайти в настройки ленты на FeedBurner и обновить ленту. Для этого входим в настройки ленты, затем переходим на вкладку Troubleshootize (Решай проблемы) и нажимаем кнопку Resync Now. После этого в течении часа кнопочка должна появится. Это может произойти как сразу, так и через час. Также, если верить тому, что написано на сайте FeedBurner, лента автоматически обновляется каждый час, поэтому вы можете просто подождать. Но я обновлял.

ВНИМАНИЕ! При обновлении ядра WordPress кнопка retweet может пропасть из RSS-ленты. Если это случится, вам необходимо будет снова проделать эти действия.

Теперь, когда кому-то понравится какое-то фото, которое вы разместили у себя на блоге, и оно попало в ленту новостей, они легко смогут прямо из ленты или своей читалки ретвитнуть ваш пост.

Ну и на по следок музыка. Песня группы Bullet For My Valentine под названием Tears Don't Fall в акустическом исполнении от них же. По-моему, звучит круто!

На этом всё. Удачи Вам!

Обновлено! Так как у многих возникают проблемы с редактированием файлов и вставкой нужного кода, я решил выложить уже отредактированные файлы feed.php + feed-rss2.php для разных версий, с какими сталкивался. Кнопка будет размещена в правом верхнем углу поста. Вам останется только залить данный файл на хостинг в папку wp-includes.

Иметь такую кнопку в ленте полезно, так как ссылки с Twitter и раскрутка сайтов тесно связаны между собой. Естественно, ведь ссылки ведут на ваш сайт народ.

Нравятся красивые часы? Тогда покупайте наручные часы для себя и близких. Время - это деньги.

Вам также будет интересно почитать и следующие записи

26 комментариев

  • Хэннер:

    А в какой кодировке файл открывать для правки, по-умолчанию или utf-8?

  • Twin:

    Хэннер, я обычно открываю в UTF-8. Могу быть не прав, но при кодировке по умолчанию проблем возникнуть не должно.

  • NozNet:

    В кодировке UTF-8 у меня вообще ничего не показывает. Страница грузиться, но она пустая. В чём может быть проблема?

  • Twin:

    NozNet, возможно, вы просто не весь код скопировали или не правильно его вставили.

  • SEOinSoul:

    А для WP относительно старой версии нет аналогичных вариантов? А то в feed.php нет такой или похожей функции…

  • shikonn:

    Непонятно, делал ведь все по инструкции, в результате теперь в блог попасть не могу — wp-includes/feed.php on line 535, как видно, ошибка выходит именно в месте замены строки

  • Twin:

    SEOinSoul, а можно точно версию вашу и файлик feed.php увидеть? Я в более ранних версиях смотрел код (в 2.3.3), но у меня нет возможности проверить его, так как нет самого WP нужного.
    shikonn, можно этот кусок кода или полностью файл ваш? Возможно, вы удалили одну скобку конечную } или добавили наоборот лишнюю. Посмотрите, закрывается ли у вас функция, то есть стоит после строки

    return apply_filters('the_content_feed', $button . $content, $feed_type);

    фигурная скобка } и один ли раз используется.

  • SEOinSoul:

    Twin
    Версия 2.6.2, вот файлик залил http://narod.ru/disk/19067819000/feed.php.html

  • Twin:

    SEOinSoul, в 2.3.3 похожий код нужной функции, вот его как раз не проверял. В старых версиях нет функции get_the_content_feed, но есть функция the_content_rss, в которой нужно производить изменения. Отредактировал файл feed.php, по теории должен заработать. Скажите, пожалуйста, заработал он или нет, хорошо?
    Отредактированный файл: http://narod.ru/disk/19068021000/feed.php.html

  • SEOinSoul:

    Twin, Спасибо большое — работает. Только выводится кнопка после поста, а не вверху справа :) Ну ничего, и так сойдет, еще раз спасибо

  • Twin:

    SEOinSoul, я рад, что вас устроил результат, но всё же я буду пробовать расположить кнопку в нужном месте (нашел где можно потестировать). Поэтому как получиться, обязательно сообщу вам.

  • SEOinSoul:

    Twin, очень любезно с вашей стороны, но не обязательно, и я так доволен :)
    Кстати, подписка на новые комментарии совсем не помешала бы 😉

  • shikonn:

    Залил ваш обновленный файл feed.php на хостинг, в RSS — ленте, если попробовать подписаться на RSS как посетитель, кнопка в ленте отображается а в Гугл Ридере и Яндекс. Ленте ни в какую не хочет.

    И еще вопрос — вместо картинок и фотографий, находящихся в записях, в ленте отображается только текст из тега ALT в виде ссылки, может быть, что — то подскажете ?

  • Twin:

    shikonn, извините за долгий ответ, проверял просто весь день всё и сейчас могу сообщить. В ленте не отображается кнопка, потому что используется скрипт, которые читалки не воспринимают (игнорируют и, в принципе, правильно). В течении некоторого времени (час-два) изменю код, вместо скрипта использоваться изображение будет, и всё заработает. Можете проверить на моей ленте пока (в читалках кнопка появилась).
    И по счет второго, у вас возможно заблокирован доступ для внешних сайтов на картинки, поэтому не отображаются. Только это пока в голову приходит. Вы не делали такого?

  • Дмитрий:

    блин, а как бы кнопку ретвит добавить на свой блог на йа.ру?

  • Twin:

    Дмитрий, я не работал с блогами на йа.ру. Там есть постоянные ссылки на определенный пост?
    Я мельком сейчас пробежался по вашему блогу, не могу отдельный пост посмотреть. Если ссылки на определенный пост имеются, то можно попробовать в ручном режиме добавить html-код через html-редактор поста. Но в автоматическом режиме это вряд ли получится, хотя если там можно изменять шаблон, то можно попробовать.

  • АлаичЪ:

    А можно как то выводить компактный режим кнопочки?
    Ну как собственно тут есть пример компактной кнопки http://help.tweetmeme.com/2009/04/06/tweetmeme-button/

  • Twin:

    АлаичЪ, дело в том, что кнопка для RSS-лент выводится в виде обычной картинки, которую я брал из страницы http://help.tweetmeme.com/2009/07/15/feed-buttons/
    Как я понял, у них нет компактной кнопки для RSS. Их скрипт тоже не вариант вставлять, так как кнопка не появится в RSS-читалках.
    Как вариант, можно вставить, например, свою статичную кнопку ретвита или сделать кнопку, которая будет обрабатывать запросы и выдавать число ретвитов статьи.

  • АлаичЪ:

    Я уже весь истрахался, никак не могу заставить кнопку появиться, версия WP 2.8.6

  • АлаичЪ:

    Автору данного блога огромное спасибо выражаю. Помог мне решить все проблемы с несчастной кнопкой!!! Теперь все работает как надо!
    Спасибо вам!

  • Сергей:

    Может кто-то переделает этот код для Topsy.com — ?
    А то в постах у меня кнопки от этого сервиса, а в фиде — из TweetMeme.
    За пост — спасибо! Всё работает.

  • Сергей Фещуков:

    @ Сергей, для фида стоит использовать кнопку-картинку, а не скрипт, так как я уже и выше писал, что RSS-читалки не пускают скрипты и кнопка в читалках просто не появляется. Кнопку-картинку у Topsy.com я не нашел, так что не могу помочь.

  • ash:

    Спасибо за пост. жду пока заработает.

    поправь там: «Buttet for my Valentine»… :) чтоли

  • Сергей Фещуков:

    @ ash, оу, даже и не заметил, что опечатался. Спасибо, исправил. :)

  • Влад:

    Здравствуйте!
    Код вставил, но изменений никаких нет. В Вашей RSS леснте никакого ретвита тоже не вижу.

  • Добавить комментарий