Последнее обновление поста: 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
.
- feed.php для WordPress 2.9.2
- feed.php + feed-rss2.php для WordPress 2.6.2
- feed.php + feed-rss2.php для WordPress 2.3.3
Иметь такую кнопку в ленте полезно, так как ссылки с Twitter и раскрутка сайтов тесно связаны между собой. Естественно, ведь ссылки ведут на ваш сайт народ.
Нравятся красивые часы? Тогда покупайте наручные часы для себя и близких. Время - это деньги.
26 комментариев
А в какой кодировке файл открывать для правки, по-умолчанию или utf-8?
Хэннер, я обычно открываю в UTF-8. Могу быть не прав, но при кодировке по умолчанию проблем возникнуть не должно.
В кодировке UTF-8 у меня вообще ничего не показывает. Страница грузиться, но она пустая. В чём может быть проблема?
NozNet, возможно, вы просто не весь код скопировали или не правильно его вставили.
А для WP относительно старой версии нет аналогичных вариантов? А то в feed.php нет такой или похожей функции…
Непонятно, делал ведь все по инструкции, в результате теперь в блог попасть не могу — wp-includes/feed.php on line 535, как видно, ошибка выходит именно в месте замены строки
SEOinSoul, а можно точно версию вашу и файлик feed.php увидеть? Я в более ранних версиях смотрел код (в 2.3.3), но у меня нет возможности проверить его, так как нет самого WP нужного.
shikonn, можно этот кусок кода или полностью файл ваш? Возможно, вы удалили одну скобку конечную } или добавили наоборот лишнюю. Посмотрите, закрывается ли у вас функция, то есть стоит после строки
фигурная скобка } и один ли раз используется.
Twin
Версия 2.6.2, вот файлик залил http://narod.ru/disk/19067819000/feed.php.html
SEOinSoul, в 2.3.3 похожий код нужной функции, вот его как раз не проверял. В старых версиях нет функции get_the_content_feed, но есть функция the_content_rss, в которой нужно производить изменения. Отредактировал файл feed.php, по теории должен заработать. Скажите, пожалуйста, заработал он или нет, хорошо?
Отредактированный файл: http://narod.ru/disk/19068021000/feed.php.html
Twin, Спасибо большое — работает. Только выводится кнопка после поста, а не вверху справа Ну ничего, и так сойдет, еще раз спасибо
SEOinSoul, я рад, что вас устроил результат, но всё же я буду пробовать расположить кнопку в нужном месте (нашел где можно потестировать). Поэтому как получиться, обязательно сообщу вам.
Twin, очень любезно с вашей стороны, но не обязательно, и я так доволен
Кстати, подписка на новые комментарии совсем не помешала бы 😉
Залил ваш обновленный файл feed.php на хостинг, в RSS — ленте, если попробовать подписаться на RSS как посетитель, кнопка в ленте отображается а в Гугл Ридере и Яндекс. Ленте ни в какую не хочет.
И еще вопрос — вместо картинок и фотографий, находящихся в записях, в ленте отображается только текст из тега ALT в виде ссылки, может быть, что — то подскажете ?
shikonn, извините за долгий ответ, проверял просто весь день всё и сейчас могу сообщить. В ленте не отображается кнопка, потому что используется скрипт, которые читалки не воспринимают (игнорируют и, в принципе, правильно). В течении некоторого времени (час-два) изменю код, вместо скрипта использоваться изображение будет, и всё заработает. Можете проверить на моей ленте пока (в читалках кнопка появилась).
И по счет второго, у вас возможно заблокирован доступ для внешних сайтов на картинки, поэтому не отображаются. Только это пока в голову приходит. Вы не делали такого?
блин, а как бы кнопку ретвит добавить на свой блог на йа.ру?
Дмитрий, я не работал с блогами на йа.ру. Там есть постоянные ссылки на определенный пост?
Я мельком сейчас пробежался по вашему блогу, не могу отдельный пост посмотреть. Если ссылки на определенный пост имеются, то можно попробовать в ручном режиме добавить html-код через html-редактор поста. Но в автоматическом режиме это вряд ли получится, хотя если там можно изменять шаблон, то можно попробовать.
А можно как то выводить компактный режим кнопочки?
Ну как собственно тут есть пример компактной кнопки http://help.tweetmeme.com/2009/04/06/tweetmeme-button/
АлаичЪ, дело в том, что кнопка для RSS-лент выводится в виде обычной картинки, которую я брал из страницы http://help.tweetmeme.com/2009/07/15/feed-buttons/
Как я понял, у них нет компактной кнопки для RSS. Их скрипт тоже не вариант вставлять, так как кнопка не появится в RSS-читалках.
Как вариант, можно вставить, например, свою статичную кнопку ретвита или сделать кнопку, которая будет обрабатывать запросы и выдавать число ретвитов статьи.
Я уже весь истрахался, никак не могу заставить кнопку появиться, версия WP 2.8.6
Автору данного блога огромное спасибо выражаю. Помог мне решить все проблемы с несчастной кнопкой!!! Теперь все работает как надо!
Спасибо вам!
Может кто-то переделает этот код для Topsy.com — ?
А то в постах у меня кнопки от этого сервиса, а в фиде — из TweetMeme.
За пост — спасибо! Всё работает.
@ Сергей, для фида стоит использовать кнопку-картинку, а не скрипт, так как я уже и выше писал, что RSS-читалки не пускают скрипты и кнопка в читалках просто не появляется. Кнопку-картинку у Topsy.com я не нашел, так что не могу помочь.
Спасибо за пост. жду пока заработает.
поправь там: «Buttet for my Valentine»… чтоли
@ ash, оу, даже и не заметил, что опечатался. Спасибо, исправил.
Здравствуйте!
Код вставил, но изменений никаких нет. В Вашей RSS леснте никакого ретвита тоже не вижу.