Всем привет! Сегодня на seo-mayak.com выходит продолжение серии статей, посвященных сервису feedburner, в которой я расскажу, как добавить картинки в RSS-ленту.
Также объясню, как настроить вывод анонсов в RSS ленте и как добавить в анонс ссылку «Читать далее» или «Читать полностью». В общем можно будет вставить ссылку с любым анкором, кому какой нравиться.
Наверное вы уже взглянули на мою RSS-ленту, если нет, то кликните по иконке в правом верхнем углу шапки блога. Согласитесь, с картинками лента выглядит гораздо веселей.
По-умолчанию, feedburner нельзя настроить на вывод изображений в ленте и по моему это существенный недостаток данного веб-сервиса, который можно и нужно исправить.
Этим мы сделаем нашу новостную ленту гораздо привлекательней и тем самым подогреем желание пользователя подписаться на наш RSS-канал, ведь как говориться, встречают по обложке…
Многие веб-мастера решают данную задачу с помощью плагинов : Insert RSS Thumbnails или WP RSS Images, но как я уже много раз говорил — зачем нагружать свой сайт плагинами, если есть возможность обойтись без них. Поехали!
Технология добавления данных в RSS-ленту
Что происходит во время публикации новой статьи? Как она попадает в RSS-ленту? Какие шестеренки в этот момент задействованы?
В первую очередь, происходит обращение к функции the_content, которая отвечает за форматирования всего контента.
Затем активируется одна из функций: the_content_feed или the_excerpt_rss, в зависимости от настроек WordPress.
the_content_feed — форматирует и передает в RSS-обработчик пост целиком.
the_excerpt_rss — форматирует и передает в RSS-обработчик анонс поста.
Чтобы выбрать одну из вышеперечисленных функций, надо пройти админка -> Параметры -> Чтение и отметить галочкой соответствующий пункт:
Советую выбрать пункт «Анонс». Если в RSS-ленте или в письме подписчику будет отображаться статья целиком, то пользователю будет незачем переходить к Вам на сайт и Вы потеряете посетителя.
Поэтому, выбираем «Анонс» и тем самым активируем функцию the_excerpt_rss.
Теперь, когда нам известна функция, отвечающая за форматирования нашего RSS-потока, мы может на нее воздействовать с помощью фильтра. Т.е. мы создадим новое «действие» и заставим функцию the_excerpt_rss его выполнять.
Придумываем название фильтру, в моем случаи фильтр будет называться mayak_image_rss и пишем такой сценарий:
function mayak_image_rss($content) { /* Здесь будет основное действие */ return $content; }
Через переменную $content мы получили контент и с помощью выражения (команды) return, вернули на место, так ничего ним и не сделав.
Теперь давайте рассмотрим само действие:
global $post; if ( has_post_thumbnail( $post->ID ) ) { $content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'style' => 'float:left; margin:0 10px 10px 0;' ) ) . '' . $content; }
Выражение global задает область действия функции. В нашем случаи, область действия должна распространятся на все посты, поэтому к выражению global, присваиваем переменную $post.
Через переменную $post мы получили все записи, которые есть в базе данных. Теперь нам надо их обработать и внедрить миниатюры.
С помощью функции has_post_thumbnail мы проверяем каждую запись на наличие миниатюры.
Если миниатюра для записи имеется, то вызываем функцию get_the_post_thumbnail, которая отвечает за форматирования изображений. Присваиваем функции параметры, которые будут влиять на размер миниатюр и на их положение на странице, относительно текста.
$content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'style' => 'float:left; margin:0 10px 10px 0;' ) ) . '' . $content;
По умолчанию в WordPress миниатюры генерируются трех размеров.
thumbnail — Миниатюра (размер по-умолчанию 150px x 150px)
medium — Средний размер (по-умолчанию 300px x 300px)
large — Большой размер (по-умолчанию 640px x 640px)
Изменить размеры можно, пройдя: админка -> Параметры -> Медиафайлы:
Допустим, я хочу, чтобы в RSS-ленте отображались миниатюры среднего размера. Для этого мне надо поменять в коде одно слово.
Вместо:
'thumbnail'
Вставить:
'medium'
В итоге команда должна выглядеть так:
$content = '' . get_the_post_thumbnail( $post->ID, 'medium', array('style' => 'float:left; margin:0 10px 10px 0;' ) ) . '' . $content;
Также в коде заданны стили для миниатюры:
array('style' => 'float:left; margin:0 10px 10px 0;' )
Где:
float:left; /* обтекание текста по левому краю */ margin:0 10px 10px 0; /* внешние отступы */
Итак, у нас есть готовое действие, по-добавлению картинок, заданного размера, в тело поста. Теперь осталось заставить функцию the_excerpt_rss выполнять написанный нами сценарий.
Для этого мы применим фильтр, через который пропустим работу функции the_excerpt_rss:
add_filter('the_excerpt_rss', 'mayak_image_rss');
На заметку! add_filter — это своего рода хук (хук с англ. — крючок, цеплялка), с помощью которого происходит привязка какого либо сценария, к конкретной функции.
Т.е, мы включили наш сценарий, который я назвал mayak_image_rss, в работу функции the_excerpt_rss и заставили его выполнять. Идем дальше.
Добавляем картинки в RSS-ленту
Сразу хочу сказать. Если на вашем блоге еще не включена поддержка миниатюр, то ее надо обязательно включить, иначе ничего работать не будет. Как включать миниатюры в WordPress, читайте здесь.
С помощью текстового редактора Notepad++ открываем для редактирования файл functions.php, что находиться в папке с темой и в самый конец перед знаком ?>, в некоторых темах ob_end_clean(), вставляем, подготовленную нами, функцию:
function mayak_image_rss($content) { global $post; if ( has_post_thumbnail( $post->ID ) ) { $content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'style' => 'float:left; margin:0 10px 10px 0;' ) ) . '' . $content; } return $content; } add_filter('the_excerpt_rss', 'mayak_image_rss');
Вот незадача, почему в ленте-то ничего не изменилось? Все правильно, ленте надо обновиться, а происходить это раз в сутки.
И что теперь целые сутки ждать? Вовсе необязательно!
В недавней статье, посвященной feedburner, я разбирал настройки вкладки «Публикуй», где описывал работу функции «BuzzBoost», с помощью которой можно мгновенно обновить контент в фиде.
Все готово! Картинки должны появится в RSS ленте.
Но статья на этом не заканчивается. Я еще обещал рассказать как убрать знак […] с конца анонсов и как добавить ссылку на пост, с анкором «Читать далее».
Ссылка «Читать далее» в RSS ленте
Как я уже писал выше, за вывод анонса, в RSS-ленте, отвечает функция the_excerpt_rss.
Данная функция работает на основе другой функции — the_excerpt, которая, в свою очередь, отвечает за вывод анонсов непосредственно на блоге.
Я сейчас не стану описывать всю сложную цепочку взаимодействия функций, при формировании анонса. Об этом вы можете почитать, пройдя по приведенной выше, ссылке.
Для замены знака […] на ссылку «Читать далее», мы будем воздействовать на функцию the_excerpt с помощью уже известного метода, а именно, добавим в функцию новый сценарий:
Для этого открываем файл functions.php и вставляем следующий код:
function mayak_segment_more($more) { global $post; return '<div style="text-align:right;"><a href="'. get_permalink($post->ID) . '"> <br/>Читать полностью »</a></div>'; } add_filter('excerpt_more', 'mayak_segment_more');
После обновления фида, ссылка должна появиться под анонсами в RSS-ленте:
Надо отметить один момент:
Итак, пора подвести некоторые итоги.
С помощью функции (фильтра) add_filter(), можно добавлять различные сценарии, практически в любую функцию WordPress, например задать шорткод или настроить защиту от спама в комментариях.
А сегодня мы выяснили, что с помощью add_filter() можно добавить картинки в RSS-ленту и вставить ссылку «Читать далее».
Но стоит знать, что возможностями данной функции могут воспользоваться и злоумышленники. Обязательно защищайте сайт от вирусов и взлома, чтобы потом вдруг не обнаружить на нем открытые внешние ссылки, замаскированные в точку.
Конечно, в будущем я еще не раз вернусь к возможностям функции add_filter() и не только, так что не примените подписаться на обновления блога и Вы непременно узнаете для себя много нового и интересного!
До встречи!
С уважением, Виталий Кириллов
« Feedburner. Зачем нужна подписка на сайте
« Регистрация в feedburner. Настройка функций во вкладке «Оптимизируй»
« Настройка RSS-ленты. Функции вкладки «Публикуй»
Увы,Виталий, то, что связано с кодами и html слишком сложно для меня!
подскажите, когда вставил код «читать далее», ссылка читать далее появилася не в rss а в блоге. может не туда вставил?
Ярослав RSS-ленте надо обновится, а на блоге ссылка «Читать далее» появилась потому, что на вашем блоге для вывода анонсов, используется функция the_excerpt(). Читайте про вывод анонсов здесь.
Спасибо, разобрался.
На блоге ссылка «Читать далее» уж год стоит, а в rss ленте, как не было, так и нет… Где искать проблему?
Я использую в новостях цитаты вместо анонсов.
Не подскажете, как в RSS вывести анонс вместо цитаты, а то ссылка «Читать полностью» не высвечивается?
Если Вы используете цитаты, то функция the_excerpt() игнорирует анонсы и вывести их в RSS не получится.
Добрый день! НЕ подскажите ли как в письмо вставить переменную, отвечающую за вывод название статьи блога? Например я выложил пост, зарегистрированным пользователям ушло уведомление об этом с названием статьи. Вот не могу название статьи вставить, все что-то не то получается. Спасибо!!!
Здравствуйте Лев! Я немного не понял, пользователем приходит письмо просто с текстом и без заголовка?
Здравствуйте! А как вы сделали, что ваша фотография отображается в RSS?
У меня нет таких символов […], как вывести ссылку «читать далее», у меня ее нет? Жду ответа, спасибо за статью.
Здравствуйте!
1. Как добавить свое фото в фид или любое другое изображение, читаете здесь.
2. Для того, чтобы вывести ссылку «читать далее», просто вставьте функцию, которую я привел в статье.
Читать полностью появилось, но она не активная, как текст, что не так ?
Где-то ошибка.
Главное в стандартном фиде сайта нормально, а в в видбинере гугла просто текст
Виталий, спасибо огромное за серию статей, все по полочкам.
Пожалуйста Мирослов!
Виталий! Большое и искреннее спасибо вам за подробную инструкцию по feedburner. Когда билась с настройками, выбрала ваш сайт более чем из пяти, за то, что все разложено по полочкам.
Пожалуйста! Рад видеть Вас, Женя!
Спасибо. RSS частенько сбивался. Рекомендации Ваши помогли.
Поставил плагин WP RSS Images Setting что бы не заморачиваться а в ленте так и не появились картинки, не подскажете почему ?
Теперь пробую этот плагин Insert RSS Thumbnails и дальше в ленте не появляются картинки ?
Виталий, освоила еще одну Вашу статью. Спасибо.
Вопрос. Я правильно поняла, что картинки проверить можно моментально благодаря функции BuzzBoost, а «читать далее» включается в течении суток?
Ой Наталья, я уже не помню, что там когда обновляется.
Когда проверите, напишите)
Отвечаю. Если все правильно, то после нажатия кнопки «сохранить» на вкладке buzzboost и перезагрузки ленты rss все сразу отображается.
Теперь у меня классно новости отражаются для подписчиков feedburner. И, так как по этой рассылке письма не попадают в спам и выглядят достойно, то есть желание оставить рассылку только здесь. А как быть с теми подписчиками, что подписывались через другую форму?… Насколько я понимаю, объединить из с feedburner нельзя… Печально.
Виталий, огромное Вам СПАСИБО за очень полезные статьи. У меня долго не работал вывод миниатюр в RSS ленту и ссылки «Читать полностью», хотя я аккуратно пользовалась вашими рекомендациями. А причина была в том, что я активировала функцию Summary Burner во вкладке «Оптимизируй». Вы об этом писали, но вскользь, я и не обратила внимание. Теперь всё нормально. Хочу Вас спросить: «Как организовать подписку на комментарии?» Заранее благодарна.
Если честно, я уже не помню, но точно такая подписка делается отдельно от основной.
Честно пыталась понять, как и что надо делать, но, похоже, не для моего ума…Подскажите, если я хочу сделать активной только ссылку «Читать далее», без картинок (это для меня совсем темный лес), я могу воспользоваться вашим последним кодом:
function mayak_segment_more($more) {
global $post;
return ‘ID) . ‘»> Читать полностью »’;
}
add_filter(‘excerpt_more’, ‘mayak_segment_more’);
подставив вместо «mayak» в «function mayak_segment_more» название своего сайта?
К сожалению, нет)
Здравствуйте!
Все норм. Но для прохождения валидатора необходимо, чтобы не указывались размеры фото width и height. Не подскажите как это поправить?
+ Нужно сменить все ссылки на относительные без https://
Виталий, здравствуйте! А вы можете подсказать, как сделать картинки в анансах сайта, который не на wp работает, а на стандартном движке Blogger? У него в админке нет таких функций, как вы описали…
Не знаю.
Виталий, добрый день! Подскажите пожалуйста, каким плагином можно заменить FD Feedburner, т.к. он не доступен для скачивания с апреля 2018 года? Я в кодах не силен, для меня это очень сложно.