Настраиваем ленту WordPress

После того, как фид создан, есть много способов настроить его внешний вид и функционал. Если вы используете фидбернер, то достаточно просто войти в аккаунт и сделать нужные правки. А если нет?

Ничего страшного, своими силами мы можем сделать еще лучше, еще больше, еще круче.

Форматируем изображения фидов

Изображение, вызываемые тегом <img src"..." alt="..." /> по сути являются строчным элементом. Изображение имеет высоту и ширину, но оно не разрывает строку и идет сразу после текста, а не с новой строки. А после изображения текст продолжает идти дальше в ряд, а не обтекает его. Поэтому не зависимо от стиля на сайте, в рсс читалке запись будет выглядеть не так, как на сайте.

Разница между сайтом и ридером
Разница между сайтом и ридером

CSS стиль вашего сайта может что угодно делать с изображениями: задавать отступы, обтекания, положения на странице. Но css файл ничего не значит и никак не влияет на содержимое rss-лент и на отображение записей в читалках. Поэтому изображения становятся строчными элементами, а ссылки – синими по умолчанию. Один из способов оторвать изображение от текста – добавить новые переносы строк до и после изображения в процессе созданияредактирования записи.

Вот пример того, о чем идет речь:

Пустые строки до и после <img> обеспечат, что параграф будет отделен от изображения и будет автоматически вставлен тег <br />. Если же вставить по две пустые строки, то изображение будет автоматически обернуто в теги <p></p>. А теги параграфа — блочные элементы, что означает, что в рсс-ленте изображение будет оторвано от текста. А последующий текст будет не дописан сбоку, а выведен под изображением с новой строки.

Другой способ — это явно указать стили изображения внутри тега img, например, так

<img src="..." alt="..." style="float: left; margin: 0 10px 2px 0;" />

Это работает и на сайте, и в любом фидридере. С точки зрения классического подхода к написанию стилей – это, конечно, очень дурной тон, т.к. уничтожает саму суть css класов и стилей. Поэтому старайтесь минимально использовать стили, непосредственно вписанные в теги, дивы и т.п.

Добавляем свое изображение для ленты

Изначально стиль фидов вордпресса достаточно скромный. Голый текст с картинками без каких-либо логотипов и иконок. Отличный способ добавить брендирования в виде своего лого такой: Добавляем в functions.php следующий код:

function mwp_feedImage() {
echo "<image>
<title>Digging Into WordPress</title>
<url>https://digwp.com/images/feed-icon.png</url>
<link>https://digwp.com/</link>
<width>150</width><height>150</height>
<description>Digging Into WordPress</description>
</image>";}
add_action('rss2_head', 'mwp_feedImage');

Указываем в качестве адреса картинки свой и редактируем при необходимости параметры, сохраняем и любуемся красотой.

Брендирование логотипом или характерной картинкой добавит узнаваемости и запоминаемости для вашего сайта. Пользователи фидбернера могут добавить свое изображение в меню Feed Image Burne.

Добавляем комментарии в фид

Т.к. вордпресс по умолчанию исключает комментарии из главного фида, для некоторых сайтов может оказаться нужным выводить в одном месте и записи, и комментарии к ним. Простым и оригинальным способом сделать это будет использование сервиса Yahoo! Pipes. Звучит устрашающе, но на самом деле все просто.

  1. Регистрируемся в Yahoo! Pipes, используя Yahoo! ID
  2. Из меню Sources перетаскиваем виджет «Fetch Feed» на рабочее пространство
  3. Добавляем адреса фидов записей и фидов комментариев. Клик по + позволяет добавлять нужное количество полей для вставки адресов.
  4. Из меню Operators тащим виджет Sort
  5. В настройках сортировки выбираем опцию item.pubDate и способ сортировки descending (по убыванию)
  6. Соединяем виджет сортировки с выходным виджетом Pipe Output

Что происходит — в одну кучку собираются сообщения из выбранных фидов и сортируются для вывода сначала самых свежих. Нажатие ссылки Refresh обновляет содержимое фидов. После нажатия кнопки Save эта труба сохраняется на сервере яху и тихонечко себе работает каждый раз, когда к ней обращаются. Чтобы получить результат ее работы, нужно нажать Publish и выбрать «Get as RSS», чтобы получать результат работы в виде рсс-ленты, которую можно отдать на фидбернер в качестве источника фида.

И все. У вас есть объединенный фид, состоящий из самых последних записей вперемешку с последними комментариями в хронологическом порядке. Конечно, с помощью Yahoo! Pipes можно создавать очень сложные и разнообразные сервисы, при этом совершенно бесплатно. Поэтому изучайте его возможности и экспериментируйте.

Если все это показалось сложным, то можно воспользоваться RSS Mix, который позволяет перемешивать до 100 рсс-лент в одну общую.

Создаем пользовательские фиды

Есть много ситуаций, когда стандартные вордпресс-ленты нас не устраивают. Например, есть рубрики, содержимое которых мы публикуем на сайте, но не хотим, чтобы они появлялись в ленте.

Исключаем рубрики, авторов и все остальное ненужное

Вот общий формат для исключения чего-либо из рсс-ленты

https://digwp.com/feed?cat=-x,-y,-z

где cat означает, что мы исключаем категорию, а x,y,z – номера исключенных рубрик.

После этого записи этих рубрик не будут попадать в главный фид. Точно так же можно исключить любой другой ненужный элемент

  • author=-n — исключает посты автора с айди n
  • year=-2009 — исключает все записи, опубликованные в 2009 году
  • monthnum=-11 — исключает все записи, опубликованные в ноябре
  • day=-22 — исключает все записи, опубликованные 22 числа
  • paged=-33 — исключает все записи с 33 страницы архива
  • s=-wordpress — исключает все записи, содержащих поисковый термин wordpress
  • category_name=-wordpress — исключает записи рубрики с названием wordpress

Вышеуказанные параметры можно комбинировать в любые нужные сочетания, например, вот так 

https://digwp.com/feed?cat=-11&s=-apple

Разные параметры соединяются символом &

В процессе создания таких пользовательских лент верным будет самому на них подписаться, чтобы убедиться, что фильтр работает как надо. А также проверить отображение содержимого фида в разных читалках.

Исключаем рубрики в functions.php

Чтобы сохранить оригинальный урл фида, но при этом изменить его содержимое, можно внести нужные правки в functions.php

function excludeCatsfromFeed($query) {
if ($query->is_feed) {
$query->set('cat','-x,-y,-z'); // id исключаемых категорий  
}
return $query;
}
add_filter('pre_get_posts','excludeCatsfromFeed');

И понятно, что кроме категорий, можно добавить в исключения все, что нам нужно.

Но если традиционно вам страшно или лень ковыряться в коде, то вот простое решение — плагин Ultimate Category Excluder

Фид только с выбранными рубриками, тегами, авторами

Точно также можно решать и обратную задачу — создать фид, состоящий только из перечисленных рубрик или тегов. В отличие от исключения, где использовался знак «-», для перечисление выбранного используется знак «+».

Вот типовой шаблон для перечисления рубрик

https://digwp.com/feed?cat=x+y+z

А комбинирование параметров выглядит так

https://digwp.com/feed?cat=11&s=apple
https://digwp.com/feed?cat=11&year=2008&author=3
https://digwp.com/?feed=rss&tag=tag1,tag2,tag3

и так далее...

Возможны любые комбинации параметров для создания идеального и уникального фида.

Включение рубрик в functions.php

Традиционный рецепт для тех, кто не хочет колдовать с урл адресами, а предпочитает нужные правки в файлах шаблона:

function includedCatsFeed($query) {
if ($query->is_feed) {
$query->set('cat','x,y,z'); // выбранные рубрики
}
return $query;
}
add_filter('pre_get_posts','includedCatsFeed');

Еще больше приемов

Если вам еще не надоело, то вот полезные трюки

https://digwp.com/feed?orderby=title&order=asc – генерирует ленту записей в алфавитном порядке

Создаем фид для страницы тремя альтернативными способами:

  • https://digwp.com/page/feed
  • https://digwp.com/feed?pagename=page
  • https://digwp.com/feed?page_id=n

Как мы помним, урл в виде айди – самый универсальный способ, на случай изменений в схеме адресации чпу или изменении названия страницы.

Стилизация фидов

Особо упертые товарищи не советуют стилизовать рсс-фиды, требуя сохранения простоты, чистоты и ясности текстов, отображаемых в читалках. Но разве можем мы быть ограничены в желании создать удобный, красивый, отформатированный текст с стильными картинками.

Как выше показывалось, самый простой способ добавить огня — это вписывать стили непосредственно в текст записи. Плагин Feedstyler позволит все это сделать быстро и легко.

Feedstyler
Feedstyler

Плагин сохраняет оригинальные стили блога и дает возможность добавить или заменить их для стиля ленты, сохраняя итоговые стили раздельно. Есть некоторые ограничения в его работе, но в целом он позволяет значительно увеличить привлекательность записей в читалках.

Удаляем версию Вордпресс

По умолчанию вордпресс вставляет упоминание о номере версии в фид. Если посмотреть исходный код ленты, то можно в заголовках увидеть версию внутри тега <generator>

<generator>https://wordpress.org/?v=2.7</generator>

Это сделано для сбора и анализа статистики использования движка, но небезопасно. Традиционно добавим пару строчек в functions.php для удаления этой информации

function killVersion() { return ''; }
add_filter('the_generator','killVersion');

А чтобы удалить номер версии и из заголовков сайта, также стоит добавить и такую строчку

remove_action('wp_head', 'wp_generator'); 

Чтобы удалить остальную ненужную или нежелательную информацию из секции <head> сайта, также можно добавить следующее

remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0 );
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Однако по мере выхода новых версий вордпресс часть этих функций может потерять актуальность.

Отключение и перенаправление нежелательных форматов лент

Как мы знаем, вордпресс генерирует огромное количество рсс лент разных форматов. Чтобы навести немного порядка, стоит в functions.php добавить следующее

function redirectFeed() {
wp_die();header("Location: https://digwp.com/feed/");exit();}

Укажите урл, на который вы бы хотели, чтобы перенаправлялись вызовы ненужных форматов лент. А теперь задайте, какие именно форматы будут перенаправлены

add_action('do_feed', 'redirectFeed', 1);  // все фиды
add_action('do_feed_rdf', 'redirectFeed', 1); // RDF (RSS 0.92) 
add_action('do_feed_rss', 'redirectFeed', 1); // RSS 1.0 feed
add_action('do_feed_rss2', 'redirectFeed', 1); // RSS 2.0 feed
add_action('do_feed_atom', 'redirectFeed', 1); // Atom feed

Добавляем пользовательскую информацию в фид

Добавлять свой собственный дополнительный контент очень просто. Это может быть текст, стили и даже скрипты, которые будут отображаться в тексте записи, в rss-ленте или в любом месте сайта. По желанию можно задать контент, который будет отображать или в фиде, или в записи на сайте, или в обоих местах одновременно.

Хорошим примером может служить добавление информации об авторе или копирайтах в футер фида и рекламу ДО или ПОСЛЕ каждого поста в фиде. Возможности реально неограниченны.

Чтобы добавить пользовательский контент в фид, разместите в нашем любимом functions.php следующее

function insertContent($content) {
$content = $content . '<p>А тут мы написали что-то интересное!</p>';
return $content;
}
add_filter('the_excerpt_rss', 'insertContent');
add_filter('the_content_rss', 'insertContent');

Все, добавленный текст будет дописан сразу же после содержимого записи, транслируемой в рсс-ленту. add filter дает возможность добавлять этот текст только в рсс, но не для отображения на сайте. Если нужно добавить текст до записи, то формат строки будет немного другой

function insertContent($content) {
$content = '<p>А тут мы написали что-то интересное!</p>' . $content;
return $content;
}
add_filter('the_excerpt_rss', 'insertContent');
add_filter('the_content_rss', 'insertContent');

Ну и для случая, когда мы хотим что-то дописать и ДО, и ПОСЛЕ поста выглядит так

function insertContent($content) {
$content = '
<p>Блок рекламы номер раз</p>' . $content . '
<p>Блок рекламы номер два</p>';
return $content;
}
add_filter('the_excerpt_rss', 'insertContent');
add_filter('the_content_rss', 'insertContent');

Импорт и отображение внешних лент

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

С помощью этих плагинов можно создать автоматически наполняемые блоги, которые будут содержать и тексты, и видео, и содержимое, а в качестве источников задавать как рсс-ленты, так и youtube или ленты созданные с помощью yahoo pipes.

Задержка после публикации

Есть известная проблема с индексацией записей. Сразу после ее публикации в блоге, она отдается в рсс-ленту, из которой может попасть на любой чужой блог и там проиндексироваться раньше, чем на первоисточнике. Поэтому правильным будет задать определенный период времени между публикацией записи и ее появление в ленте.

Также это поможет избежать появления в ленте сырых, недоработанных или записей с ошибками. Как только вы нажимали на кнопку «Опубликовать» – ошибки и опечатки разлетались по сети и по подписчикам. Что не есть хорошо.

Данный код в functions.php создаст задержку в 5 минут между публикацией и трансляцией, но вы можете поставить нужный интервал для себя

function publish_later_on_feed($where) {
        global $wpdb;
        if ( is_feed() ) {
        $now = gmdate('Y-m-d H:i:s');
                $wait = '5';  // указываем задержку 5
                $device = 'MINUTE';  // минут
           //для других интервалов выбрать MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
              $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
        }
        return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

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

Еще несколько фишек

Чтобы добавить свой специфический контент в футер рсс-ленты, можно воспользоваться плагином RSS Footer, который добавит заданный текст копирайта, предупреждения, рекламы, ссылок и т.п. в нижнюю часть фида. Функционал этого плагина включен в Yoast SEO плагин, но его можно использовать и отдельно.

Ozh' Better Feed – добавляет массу возможностей и настроек футера фида.

Simple Custom Content – добавляет пользовательский контент в записи и фиды в любое выбранное место.

Защищаем содержимое лент

Легкодоступность rss-лент и их содержимое искушает возможностью их стащить. Тогда как обычный пользователь и подписчик просматривает сайт и фид, добавляя их в читалку, пользуясь возможностью всегда быть в курсе актуального и свежего контента, жулики и горе вебмастера используют фиды как доноры для контента. Автоматически сгенерированные сайты не несут никакой пользы посетителям, однако из-за эксплуатации различных недостатков поисковых алгоритмов иногда могут ранжироваться выше, нежели оригинальные сайты и первоисточники.

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

Но самое мощное — брендируйте свой контент, создавайте неповторимый стиль и полезность информации. И тогда где бы его не опубликовали — читатель всегда сможет его идентифицировать с вами и вернется на ваш сайт.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up