Фіди (RSS) у WordPress

Фіди WordPress – це формат виведення записів або коментарів у спеціальному форматі. Це теж саме, що виведення записів на головній станиці, тільки в особливому форматі, який створюється за певними стандартами і який може прочитати та зрозуміти програма-збирач стрічок новин.

Фіди використовуються, наприклад, програмою, яка збирає останні публікації з різних сайтів, серед них є ваш сайт (ваш фід). Щоб ця програма змогла зрозуміти де заголовок запису, а де контент – фіди всіх сайтів мають однаковий формат – це загальноприйнятий стандарт. Таких стандартів кілька: RSS , RSS2 , Atom , RDF . Останнім часом майже завжди використовується RSS2 .

У попередніх версіях WordPress генерував формат фіда RSS-0.92 , але тепер цей формат редиректит на RSS-2.0 . Однак шаблон цього старого формату є в ядрі.


Як працюють фіди у 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 (файли)

Які файли двигуна відповідають за висновок якого фіда.

Фіди записів:

Кожен файл відповідатиме за свій тип фіда.

feed-rss.php – вважається застарілим форматом.

Закінчення /feed відноситься до файлу feed-rss2.php .

Фіди коментарів:


Функції фідів

Дивіться у файлі: /wp-includes/feed.php

Залишити коментар

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