ЛЕНТЫ (RSS) В WORDPRESS
Ленты в WordPress — это формат для отображения постов или комментариев в специальном виде. Это похоже на отображение постов на главной странице, но с учетом определенных стандартов, которые могут быть поняты программами-агрегаторами новостей.
Ленты используются, например, программами, которые собирают последние публикации с разных сайтов, включая ваш (ваша лента). Чтобы такая программа поняла, где название поста, а где его содержимое, ленты всех сайтов имеют одинаковый формат — это общепринятый стандарт. Существует несколько таких стандар��ов: RSS, RSS2, Atom, RDF. В последнее время практически всегда используется RSS2.
В предыдущих версиях WordPress генерировался формат ленты RSS-0.92, но теперь этот формат перенаправляется на RSS-2.0. Однако шаблон этого старого формата все еще присутствует в ядре.
- Чтобы работать с лентами, смотрите функцию
fetch_feed()
. - Примеры изменения лент можно найти в коллекции хуков для лент.
- Проверить ленты можно на сайте W3C Feed Validator.
Содержание
- Как работают ленты в WordPress
- Как отключить ленты в WordPress
- Типы контента и форматы лент
- URL-адреса (ссылки) лент в WordPress
- PHP-шаблоны для лент WordPress (файлы)
- Функции лент
Как работают ленты в WordPress
Прежде всего, стоит отметить, что ленты текущего сайта WordPress не кэшируются. Кэширование происходит в браузере. Чтобы обойти кэш, перезагрузите страницу с помощью сочетания клавиш Ctrl + F5. Либо можно добавить следующий хук для отключения кэширования:
Отключение кэширования в браузере для запросов к лентам
add_filter( 'wp_headers', function($headers){
if( !empty($GLOBALS['wp']->query_vars['feed']) ){
unset( $headers['ETag'], $headers['Last-Modified'] );
}
return $headers;
});
Как работает запрос к ленте
После загрузки всего WordPress и установки текущего запроса и его параметров вызывается файл template-loader.php
. В нем, после проверки is_feed()
, вызывается функция do_feed()
.
Затем, если в запросе не был указан конкретный тип ленты, он определяется с помощью функции get_default_feed()
(вы можете изменить тип ленты по умолчанию через ее хук).
Далее вызывается динамический хук do_feed_(feed)
:
do_action( "do_feed_{$feed}", $wp_query->is_comment_feed, $feed );
Для каждого варианта этого хука в WordPress по умолчанию подключена функция:
do_feed_rdf()
do_feed_rss()
do_feed_rss2()
do_feed_atom()
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/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)
Как получить ссылку на ленту определенного типа
Когда вам нужно получить ссылку на ленту по умолчанию определенного типа, можете использовать функции для получения информации о сайте:
Ссылки для ленты всех комментариев WordPress
- http://example.com/comments/feed/ (формат с красивой ссылкой)
- http://example.com/wp-commentsrss2.php (основной формат)
- http://example.com/?feed=commentsrss2 (формат через параметр запроса)
Где хранится ссылка на ленту всех комментариев:
Ссылка на комментарии конкретного поста
Другой способ отобразить ссылку на ленту комментариев конкретного поста — добавить /feed/
в конец постоянной ссылки (для красивых постоянных ссылок) или ?feed=rss2
(если красивые постоянные ссылки отключены). Результат будет:
- http://example.com/individual-post/feed/ (формат с красивой ссылкой)
- http://example.com/individual-post/?feed=rss2 (основной формат)
Ссылка на ленту комментариев поста может также выглядеть так, если красивые URL (постоянные ссылки) отключены. Здесь p
— это ID поста:
Ссылки на ленты постов из категории
- 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-atom-comments.php
- /wp-includes/feed-rss2-comments.php
Функции лент
Смотрите файл: /wp-includes/feed.php