


Блог IT-шника
Блог IT-шника
Привіт:) ВордПрес спочатку створювався для блогів. Тому в ньому є інструменти швидкого розповсюдження контенту. У цьому пості розповім навіщо потрібна і детально покажу налаштування RSS-стрічки WordPress.
Ця технологія розшифровується як Simple Really Syndication (друга назва — Feed) і означає "дуже просте поширення". Це набір даних у форматі XML, у яких міститься інформація про нові публікації на сайті. Наприклад, з'явився новий пост на блозі. Простими словами — це список коротких анонсів статей із посиланнями на них.
У браузері виглядає приблизно так:
У списку першими йдуть найсвіжіші за датою публікації матеріали.
Після встановлення WordPress канал RSS вже працює за замовчуванням та доступний за адресами:
https://site.com/feed
https://site.com/comments/feed/
Перший відображає анонси з посиланнями на останні записи, а другий — на коментарі.
до змісту ↑Фіди служать для 2-х основних завдань.
Адмін-частина ВордПрес не дозволяє гнучко налаштувати Фід-стрічку. Єдине, що можна зробити, — це задати кількість постів, що відображаються у ній, і що в них відображати (повний текст публікації або анонс).
Також для стрічок можна налаштувати:
Покажу як зробити всі ці опції.
до змісту ↑Список анонсів виглядатиме читабельно, якщо до кожного з них додати прикріплену мініатюру. Для цього просто додайте 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 );
Стрічка зі списком коментарів для кожного посту доступна за адресою
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-канал можна за допомогою безкоштовного онлайн-сервісу https://validator.w3.org/feed/.
Перейдіть на сайт, введіть URL-адресу свого Фіду та натисніть кнопку Check. У разі успіху ви побачите повідомлення "This is a valid RSS feed".
Привіт, Михайле! По-справжньому досяг успіху і досяг у житті лише той, хто не тільки бере, а й дає. Навчається сам і навчає інших. Ділиться досвідом та знаннями. Це про Вас Михайло і я радий знайомству на просторах Інтернету!
Хочу вести сайт infometod.com.ua, але не знаю як просто зробити форму ПІДПИСАТИСЯ на WordPress. З повагою.
Привіт, пане Василю! 🙂
Дякую за Ваші добрі слова! Також радий знайомству!
Для створення форми підписки на сайті WordPress можу запропонувати пару робочих варіантів.
1. Окремий плагін. Наприклад, "Newsletter – Send awesome emails from WordPress" або подібний. Сам не користувався, але знаю, що такі плагіни мають власну форму підписки (доступну як окремий віджет) та функціонал розсилки. В результаті відвідувач Вашого сайту у формі підписки вводить свій email, який зберігається у базі даних Вашого сайту. Далі, коли Ви публікуєте нову статтю на сайті, плагін автоматично розсилає цю новину всім підписникам. Опцій у таких плагінах є багато, але інформацію із їх налаштування, думаю, можна знайти в Інтернеті.
2. Онлайн-сервіс. Зазвичай такі сервіси дають Вам лише код форми підписки, яку потрібно вивести десь на сайті. Найпростіший варіант - це розмістити цей код у віджетній області сайту. Для цього через адмін-меню Вигляд -> Віджети додайте віджет(блок) "Власний HTML" у віджетну область свого сайту (наприклад на бокову панель), та в його вмісті розмістіть код, який надасть сервіс. Із українських сервісів знаю sendpulse.ua, із зарубіжних - mailchimp.com. Їх інструменти беруть на себе зберігання email-адрес підписників та розсилання новин. Зможете обрати періодичність, час розсилання, скористатися готовим шаблонами email-листів.
Наприклад, у своєму блозі на даний момент користуюся безкоштовним тарифом саме mailchimp.com.
Велике дякую! Буду пробувати і як кажуть у народі "Якщо ви можете думати про це і вірити в це, ви можете досягти цього". З повагою.
Будь ласка.
Бажаю Вам всього найкращого, нехай у Вас все вийде!