Фіди (RSS) у WordPress
Фіди WordPress – це формат виведення записів або коментарів у спеціальному форматі. Це теж саме, що виведення записів на головній станиці, тільки в особливому форматі, який створюється за певними стандартами і який може прочитати та зрозуміти програма-збирач стрічок новин.
Фіди використовуються, наприклад, програмою, яка збирає останні публікації з різних сайтів, серед них є ваш сайт (ваш фід). Щоб ця програма змогла зрозуміти де заголовок запису, а де контент – фіди всіх сайтів мають однаковий формат – це загальноприйнятий стандарт. Таких стандартів кілька: RSS , RSS2 , Atom , RDF . Останнім часом майже завжди використовується RSS2 .
У попередніх версіях WordPress генерував формат фіда RSS-0.92 , але тепер цей формат редиректит на RSS-2.0 . Однак шаблон цього старого формату є в ядрі.
Для роботи з фід дивіться функцію fetch_feed()
Приклади зміни фідів дивіться у добірці хуків для фідів .
- Перевірити фід: https://validator.w3.org/feed/
Як працюють фіди у WordPress
Спочатку варто сказати, що фіди поточного сайту WordPress не кешуються. Кешування відбувається в браузері, щоб обійти його оновлюйте сторінку через Сtrl + F5. Або можна додати такий хук:
## відключимо кешування в барузері для запитів фідів add_filter( 'wp_headers', function($headers){ if( !empty($GLOBALS['wp']->query_vars['feed']) ){ unset( $headers['ETag'], $headers['Last-Modified'] ); } return $headers; });
Як працює запит фіда
Після завантаження всього ВП та встановлення поточного запиту та його параметрів викликається файл do_feed() .
Далі, якщо запит не був зазначений конкретний тип фіда, він визначається функцією get_default_feed() (через її хук можна змінити тип фіда за умовчанням).
Далі викликається динамічний хук do_feed_(feed) :
do_action( "do_feed_{$feed}", $wp_query->is_comment_feed, $feed );
До кожного варіанта цього хука WP за замовчуванням підключена функція (див. default-filters.php ):
add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1); add_action( 'do_feed_rss', 'do_feed_rss', 10, 1); add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1); add_action( 'do_feed_atom', 'do_feed_atom', 10, 1);
Тобто. в залежності від типу фіда, спрацьовує одна з функцій, яка підключає потрібний файл шаблону, який, у свою чергу, генерує HTML код сторінки фіда.
Зазвичай спрацьовує функція do_feed_rss2() :
function do_feed_rss2( $for_comments ) { if ( $for_comments ) load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' ); else load_template( ABSPATH . WPINC . '/feed-rss2.php' ); }
Як вимкнути фіди у WordPress
Для цього потрібно відкріпити всі функції фідів від хуків:
remove_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1); remove_action( 'do_feed_rss', 'do_feed_rss', 10, 1); remove_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1); remove_action( 'do_feed_atom', 'do_feed_atom', 10, 1);
Тепер при заході на сторінку фіда, наприклад /feed , ми побачимо 404 сторінку з повідомленням:
Оскільки фідів у нас тепер немає, потрібно видалити посилання на фіди з wp_head :
add_action( 'wp', function(){ remove_action( 'wp_head', 'feed_links_extra', 3); remove_action( 'wp_head', 'feed_links', 2); remove_action( 'wp_head', 'rsd_link'); });
Читайте також: Видалення фідів, крім фіда на головній станиці
Типи контенту та формати фідів
Тепер, коли ми розібралися з тим, що таке фіди, подивимося, які види контенту надає WordPress у форматі фіда:
Тип Фіда | Приклад URL |
---|---|
Останні записи (головний фід) | http://example.com/feed/ |
Останні коментарі (головний фід) | http://example.com/comments/feed/ |
Коментарі вказаної посади | http://example.com/2009/07/post-name/feed/ |
Коментарі вказаної сторінки | http://example.com/archives/feed/ |
Записи за день, місяць, рік, рубрика, мітка | http://example.com/2010/feed/ , http://example.com/2010/10/feed/ , http://example.com/tag/tag-name/feed/ |
Записи для вказаного запиту пошуку | http://example.com/search/term/feed/ |
Замість /feed/ в кінці можуть бути використані й інші типи RSS:
- Atom – /atom/
- RDF – /rdf/
- RSS2 – /feed/ , /feed/rss/ або /feed/rss2/
URL (посилання) фідів у WordPress
Посилання (ЧПУ) для фідів усіх записів
- http://example.com/feed/ (RSS 2.0 формат)
- http://example.com/feed/rss2/ (RSS 2.0 формат)
- http://example.com/feed/rss/ (RSS 0.92 формат)
- http://example.com/feed/rdf/ (RDF/RSS 1.0 формат)
- http://example.com/feed/atom/ (Atom формат)
Посилання (не ЧПУ) для фідів усіх записів
- http://example.com/wp-rss2.php (RSS 2.0 формат)
- http://example.com/wp-rss.php (RSS 0.92 формат)
- http://example.com/wp-rdf.php (RDF/RSS 1.0 формат)
- http://example.com/wp-atom.php (Atom формат)
Посилання (не ЧПУ) для фідів усіх записів через параметр запиту
- http://example.com/?feed=rss2 (RSS 2.0 формат)
- http://example.com/?feed=rss (RSS 0.92 формат)
- http://example.com/?feed=rdf (RDF/RSS 1.0 формат)
- http://example.com/?feed=atom (Atom формат)
В якій опції зберігається кожне посилання на фід
Коли потрібно отримати посилання на дефолтний фід цього виду, можна використовувати функції отримання опцій сайту (інформації про сайт):
<?php bloginfo('rss2_url'); ?> <!-- RSS 2.0 формат --> <?php bloginfo('rss_url'); ?> <!-- RSS 0.92 формат --> <?php bloginfo('rdf_url'); ?> <!-- RDF/RSS 1.0 формат --> <?php bloginfo('atom_url'); ?> <!-- Atom формат -->
Посилання на фід всіх коментарів WordPress
- http://example.com/comments/feed/ (ЧПУ формат)
- http://example.com/wp-commentsrss2.php (дефолтний формат)
- http://example.com/?feed=commentsrss2 (формат із параметрів запиту)
В якій опції зберігається посилання на фід всіх коментарів:
<?php bloginfo('comments_rss2_url'); ?>
Посилання на коментарі вказаної посади
<?php comments_rss_link('Підпишіться на коментарі цього запису по RSS-2.0 фіду'); ?>
Інший варіант вивести посилання на фід коментарів зазначеного поста – це додати в кінець постійного посилання feed/ (для ЧПУ) або ?feed=rss2 (якщо ЧПК вимкнено). Тобто. в результаті отримаємо:
- http://example.com/individual-post/feed/ (ЧПУ формат)
- http://example.com/individual-post/?feed=rss2 (дефолтний формат)
Також посилання на фід коментів посту може виглядати так, якщо відключені красиві URL (ЧПУ). Нижче p
– це ID запису.
- http://example.com/?feed=rss2&p=123
Посилання на фід записів з рубрики
- http://example.com/category/categoryname/feed/ (ЧПУ формат)
- http://example.com/wp-rss2.php?cat=33 (дефолтний формат)
PHP шаблони фідів WordPress (файли)
Які файли двигуна відповідають за висновок якого фіда.
Фіди записів:
- /wp-includes/feed-atom.php
- /wp-includes/feed-rdf.php
- /wp-includes/feed-rss.php
- /wp-includes/feed-rss2.php
Кожен файл відповідатиме за свій тип фіда.
feed-rss.php – вважається застарілим форматом.
Закінчення /feed відноситься до файлу feed-rss2.php .
Фіди коментарів:
Функції фідів
Дивіться у файлі: /wp-includes/feed.php