Функция is_feed() в WordPress: описание, примеры использования

Функция 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 и других форматах лент, чтобы лучше контролировать, что пользователи видят.

Leave a Reply

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