Як налаштувати RSS-стрічку WordPress

Привіт:) ВордПрес спочатку створювався для блогів. Тому в ньому є інструменти швидкого розповсюдження контенту. У цьому пості розповім навіщо потрібна і детально покажу налаштування RSS-стрічки WordPress.

Що таке RSS

Ця технологія розшифровується як Simple Really Syndication (друга назва — Feed) і означає "дуже просте поширення". Це набір даних у форматі XML, у яких міститься інформація про нові публікації на сайті. Наприклад, з'явився новий пост на блозі. Простими словами — це список коротких анонсів статей із посиланнями на них.

У браузері виглядає приблизно так:

У списку першими йдуть найсвіжіші за датою публікації матеріали.

Після встановлення WordPress канал RSS вже працює за замовчуванням та доступний за адресами:

https://site.com/feed
https://site.com/comments/feed/

Перший відображає анонси з посиланнями на останні записи, а другий — на коментарі.

до змісту ↑

Практичне застосування

Фіди служать для 2-х основних завдань.

  1. Підписка. Для цього використовується спеціальна програма або веб-сервіс, які беруть дані зі стрічки та щось із ними роблять. Наприклад, на сайті є форма підписки на новини. У ній відвідувач вводить свій e-mail та натискає кнопку Підписатися. У результаті йому на пошту надходить лист із повідомленням про новий контент та з коротким його змістом. Це дозволяє завжди бути в курсі нових публікацій.
  2. Агрегація. Це збір даних із зовнішніх джерел. Знаючи адресу RSS-каналу, можна автоматично збирати новий вміст з інших ресурсів. Такий хід використовують великі портали новин.
Агрегатори часто користуються для крадіжки чужого контенту.
до змісту ↑

Як налаштувати

Адмін-частина ВордПрес не дозволяє гнучко налаштувати Фід-стрічку. Єдине, що можна зробити, — це задати кількість постів, що відображаються у ній, і що в них відображати (повний текст публікації або анонс).

Також для стрічок можна налаштувати:

  • встановлення мініатюри в анонсі публікації,
  • відкладену публікацію (із затримкою),
  • приховування частини вмісту запису,
  • виняток з виведення окремих постів та рубрик (категорій),
  • встановлення посилання на джерело,
  • заборона на індексування пошуковими системами,
  • повне вимкнення.

Покажу як зробити всі ці опції.

до змісту ↑

Встановлення мініатюри

Список анонсів виглядатиме читабельно, якщо до кожного з них додати прикріплену мініатюру. Для цього просто додайте PHP-код у файл functions.php:

function mp_thumbs_in_rss( $content ) {
    global $post;
    if( is_feed() ) {
        if ( has_post_thumbnail( $post->ID ) ) {
            $thumb = '<div style="float: left; padding: 0 10px 5px 0;">'.get_the_post_thumbnail( $post->ID, 'thumbnail' ).'</div>';
            $content = $thumb . $content;
        }
    }
    return $content;
}
add_filter( 'the_excerpt_rss', 'mp_thumbs_in_rss' );
add_filter( 'the_content_feed', 'mp_thumbs_in_rss' );

У коді конструкція float: left притискає зображення до лівого краю щодо тексту уривка.

  • padding: 0 10px 5px 0 — відступ праворуч та знизу від країв картинки.
  • get_the_post_thumbnail( $post->ID, 'thumbnail' ) — отримання зображення до кожного запису. Параметр thumbnail — розмір мініатюри 150x150 пікселів. Якщо потрібно вказати інший, використовуйте конструкцію array (200,100). Перше значення — ширина, друге — висота в пікселях.
до змісту ↑

Відкладена публікація

Іноді потрібно, щоб нова стаття не відразу з'явилася у каналі RSS, а через якийсь час. У цьому допоможе скрипт:

function mp_publish_later_on_feed( $where ) {
    global $wpdb;
    if ( is_feed() ) {
        $now = gmdate('Y-m-d H:i:s');
        $wait = '10';
        $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', 'mp_publish_later_on_feed' );

Значення MINUTE та 10 вказують на те, що новина у Фіді з'явиться через 10 хвилин після публікації.

до змісту ↑

Приховування частини вмісту запису

Іноді потрібно приховати частину вмісту запису зі стрічки. Для цього використовуйте код:

function mp_hideinfeed_shortcode( $atts, $content ) {
    if ( ! is_feed() )
        return $content;
}
add_shortcode( 'hideinfeed', 'mp_hideinfeed_shortcode' );

Далі відкрийте на редагування публікацію та в редакторі помістіть контент, який потрібно прибрати з RSS, у шорткод

[hideinfeed]Вміст, який потрібно приховати у Feed-стрічці[/hideinfeed]

Якщо відкрити сторінку на сайті, то вибраний текст, як і раніше, відображатиметься.

до змісту ↑

Виключення показу окремих постів/рубрик

Щоб виключити конкретні публікації, використовуйте наступний код:

function mp_exclude_posts_from_rss( $query ) {
    if ( !$query->is_admin && $query->is_feed ) {
        $query->set( 'post__not_in', array( 35, 55 ) );
    }
    return $query;
}
add_filter( 'pre_get_posts', 'mp_exclude_posts_from_rss' );

Замість значень 35 і 55 через кому перерахуйте ID записів, які хочете прибрати з каналу.

Для приховання окремих рубрик:

function mp_exclude_category_from_feed( $query ) {
    if ( $query->is_feed ) {
        $query->set( 'cat', '-5, -2, -3' );
    }
    return $query;
}
add_filter( 'pre_get_posts', 'mp_exclude_category_from_feed' );

Тут -5, -2, -3 — унікальні ідентифікатори категорій.

до змісту ↑

Встановлення посилання на джерело

function mp_add_source_link_to_feed ( $content ) {
    global $post;
    
    $content .= '
    <p>
        <br>Джерело: <a href="'. get_permalink( $post->ID ) .'">'.get_the_title( $post->ID ) .'</a>
    </p>
    ';

    return $content;
}
add_filter( 'the_excerpt_rss', 'mp_add_source_link_to_feed' );

Заборона індексування пошуковими системами

Наприкінці файлу robots.txt додайте рядки:

Disallow: /comments/feed/
Disallow: */feed
Disallow: */rss

Директиви вказують пошуковим роботам, щоб пошукові системи не індексували RSS записів та коментарів.

Відключення всіх стрічок

Щоб прибрати з виведення Фід-канали постів та коментарів:

function mp_disable_feed() {
    wp_die( __( 'Усі RSS-стрічки на сайті вимкнені!' ) );
}
add_action( 'do_feed', 'mp_disable_feed', 1 );
add_action( 'do_feed_rdf', 'mp_disable_feed', 1 );
add_action( 'do_feed_rss', 'mp_disable_feed', 1 );
add_action( 'do_feed_rss2', 'mp_disable_feed', 1 );
add_action( 'do_feed_atom', 'mp_disable_feed', 1 );
add_action( 'do_feed_rss2_comments', 'mp_disable_feed', 1 );
add_action( 'do_feed_atom_comments', 'mp_disable_feed', 1 );

Вимкнення RSS-стрічки коментарів

Стрічка зі списком коментарів для кожного посту доступна за адресою

site.com/post-title/feed/

Що окремо її прибрати:

function mp_disable_comments_feed( $comments ) {
    if ( $comments ) {
        wp_die( 'RSS-стрічки коментарів вимкнені', 404 );
    }
}
add_action( 'do_feed', 'mp_disable_comments_feed', 1 );
add_action( 'do_feed_rdf', 'mp_disable_comments_feed', 1 );
add_action( 'do_feed_rss', 'mp_disable_comments_feed', 1 );
add_action( 'do_feed_rss2', 'mp_disable_comments_feed', 1 );
add_action( 'do_feed_atom', 'mp_disable_comments_feed', 1 );
до змісту ↑

Як перевірити RSS-стрічку

Перевірити чи правильно працює RSS-канал можна за допомогою безкоштовного онлайн-сервісу https://validator.w3.org/feed/.

Перейдіть на сайт, введіть URL-адресу свого Фіду та натисніть кнопку Check. У разі успіху ви побачите повідомлення "This is a valid RSS feed".

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, блоги на WordPress.

коментарі 4

  1. Привіт, Михайле! По-справжньому досяг успіху і досяг у житті лише той, хто не тільки бере, а й дає. Навчається сам і навчає інших. Ділиться досвідом та знаннями. Це про Вас Михайло і я радий знайомству на просторах Інтернету!
    Хочу вести сайт infometod.com.ua, але не знаю як просто зробити форму ПІДПИСАТИСЯ на WordPress. З повагою.

    • Привіт, пане Василю! 🙂

      Дякую за Ваші добрі слова! Також радий знайомству!

      Для створення форми підписки на сайті WordPress можу запропонувати пару робочих варіантів.

      1. Окремий плагін. Наприклад, "Newsletter – Send awesome emails from WordPress" або подібний. Сам не користувався, але знаю, що такі плагіни мають власну форму підписки (доступну як окремий віджет) та функціонал розсилки. В результаті відвідувач Вашого сайту у формі підписки вводить свій email, який зберігається у базі даних Вашого сайту. Далі, коли Ви публікуєте нову статтю на сайті, плагін автоматично розсилає цю новину всім підписникам. Опцій у таких плагінах є багато, але інформацію із їх налаштування, думаю, можна знайти в Інтернеті.
      2. Онлайн-сервіс. Зазвичай такі сервіси дають Вам лише код форми підписки, яку потрібно вивести десь на сайті. Найпростіший варіант - це розмістити цей код у віджетній області сайту. Для цього через адмін-меню Вигляд -> Віджети додайте віджет(блок) "Власний HTML" у віджетну область свого сайту (наприклад на бокову панель), та в його вмісті розмістіть код, який надасть сервіс. Із українських сервісів знаю sendpulse.ua, із зарубіжних - mailchimp.com. Їх інструменти беруть на себе зберігання email-адрес підписників та розсилання новин. Зможете обрати періодичність, час розсилання, скористатися готовим шаблонами email-листів.

      Наприклад, у своєму блозі на даний момент користуюся безкоштовним тарифом саме mailchimp.com.

  2. Велике дякую! Буду пробувати і як кажуть у народі "Якщо ви можете думати про це і вірити в це, ви можете досягти цього". З повагою.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *