Функция is_feed() в WordPress
Что такое is_feed()?
Функция is_feed() в WordPress позволяет проверить, является ли текущий запрос запросом на получение ленты (например, RSS или Atom). Это полезно, когда вам нужно изменить поведение сайта в зависимости от того, запрашивается ли лента или нет.
Возвращаемое значение
Функция возвращает:
true— если запрос на лентуfalse— если запрос не на ленту
Использование
Функция вызывается следующим образом:
is_feed( $feeds );
Параметры:
$feeds(string|string[]) — тип ленты или массив типов лент для проверки. По умолчанию — пустая строка ('').
Примеры использования
Пример 1: Изменение запроса для лент
Предположим, у нас есть пользовательское поле skip_rss_flag, которое мы устанавливаем в true, если не хотим, чтобы пост отображался в RSS-ленте. Изменим запрос с помощью функции is_feed().
Для этого добавьте следующий код в файл functions.php вашей темы:
add_filter( 'posts_where', 'skip_post_from_rss' );
function skip_post_from_rss( $where ){
global $wpdb;
// Проверьте, что это запрос на ленту.
if( ! is_feed() ){
return $where; // Возвращаем, если это не лента.
}
$where .= " AND $wpdb->posts.ID NOT IN (
SELECT distinct(post_id) FROM $wpdb->postmeta
WHERE $wpdb->postmeta.meta_key = 'skip_rss_flag'
) ";
return $where; // Возвращаем модифицированный запрос.
}
Примечание
- Глобальная переменная:
WP_Queryи$wp_query— это объект запроса WordPress.
История изменений
- Функция
is_feed()была добавлена в версии 1.5.0 WordPress.
Как это работает?
Функция is_feed() проверяет, запрашивается ли лента, и если это так, позволяет изменять запросы для исключения опре��елённых постов. Например, с помощью вышеописанного кода, вы можете скрыть посты с установленным флагом, чтобы они не появлялись в ленте.
Завершение
Функция is_feed() — это полезный инструмент для управления содержимым ленты вашего сайта. Используйте её для настройки видимости постов в RSS и других форматах лент, чтобы лучше контролировать, что пользователи видят.