ЛЕНТЫ (RSS) В WORDPRESS

ЛЕНТЫ (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

Красивые постоянные ссылки для лент всех постов

Некрасивые постоянные ссылки для лент всех постов

Некрасивые постоянные ссылки для лент всех постов через параметр запроса

Как получить ссылку на ленту определенного типа

Когда вам нужно получить ссылку на ленту по умолчанию определенного типа, можете использовать функции для получения информации о сайте:

 
 
 
 

Ссылки для ленты всех комментариев WordPress

Где хранится ссылка на ленту всех комментариев:

Ссылка на комментарии конкретного поста

Другой способ отобразить ссылку на ленту комментариев конкретного поста — добавить /feed/ в конец постоянной ссылки (для красивых постоянных ссылок) или ?feed=rss2 (если красивые постоянные ссылки отключены). Результат будет:

Ссылка на ленту комментариев поста может также выглядеть так, если красивые URL (постоянные ссылки) отключены. Здесь p — это ID поста:

Ссылки на ленты постов из категории

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *