is_feed

Проверяет запрашивается ли в текущий момент фид.

Хуков нет.

Возвращает

true или false.

Использование

<?php
if( is_feed() ){
	...
}
?>

Примеры

#1. Изменение запроса для фидов

Предположим у нас есть произвольное поле skip_rss_flag, в него мы указываем значение true, если нужно исключить пост из RSS ленты.

Тогда используя условный тег is_feed(), мы можем изменить запрос для фидов. Для этого вставим нижеследующий код в файл темы functions.php и укажем посту, который нужно исключить из RSS, произвольное поле skip_rss_flag со значением true (или любое другое значение):

add_filter('posts_where', 'skip_post_from_rss');
function skip_post_from_rss($where){
	// Выходим если это не фид.
	if( ! is_feed() )
		return $where;

	global $wpdb;

	$where .= " AND $wpdb->posts.ID NOT IN ( 
						SELECT distinct(post_id) from $wpdb->postmeta 
						where $wpdb->postmeta.meta_key = 'skip_rss_flag'
						) ";

	return $where;
}

Код из плагина skip-rss.

Код из


wp-includes/query.php

WP 4.7.2

<?php
function is_feed( $feeds = '' ) {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
		return false;
	}

	return $wp_query->is_feed( $feeds );
}