Использование форматов постов является отличным способом для задания различного оформления. Однако не всегда отправка постов всех форматов в RSS является оправданным: некоторые блоггеры исключают короткие заметки, цитаты или статусы из фида. Я уже описывал способ исключения постов определенных категорий из RSS, давайте теперь посмотрим, как из RSS исключить посты определенных форматов.
Для исключения из RSS постов определенного формата добавьте в файл functions.php используемой вами темы следующий код:
if ( $wp_query->is_feed() ) {
$post_formats_to_exclude = array(
'post-format-ФОРМАТ'
);
$extra_tax_query = array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => $post_formats_to_exclude,
'operator' => 'NOT IN'
);
$tax_query = $wp_query->get( 'tax_query' );
if ( is_array( $tax_query ) ) {
$tax_query = $tax_query + $extra_tax_query;
} else {
$tax_query = array( $extra_tax_query );
}
$wp_query->set( 'tax_query', $tax_query );
}
}
add_action( 'pre_get_posts', 'exclude_post_formats_from_feeds' );
В этом коде ФОРМАТ – это текстовый ярлык формата поста (aside/gallery/link/image/quote/status/video/audio/chat). Подробнее о форматах постов: Форматы постов и вывод на главной странице постов определенного формата.
Если нужно исключить из RSS посты нескольких форматов, то используйте этот код:
if ( $wp_query->is_feed() ) {
$post_formats_to_exclude = array(
'post-format-ФОРМАТ',
'post-format-ФОРМАТ',
'post-format-ФОРМАТ'
);
$extra_tax_query = array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => $post_formats_to_exclude,
'operator' => 'NOT IN'
);
$tax_query = $wp_query->get( 'tax_query' );
if ( is_array( $tax_query ) ) {
$tax_query = $tax_query + $extra_tax_query;
} else {
$tax_query = array( $extra_tax_query );
}
$wp_query->set( 'tax_query', $tax_query );
}
}
add_action( 'pre_get_posts', 'exclude_post_formats_from_feeds' );
Например, код для исключения из RSS постов форматов статус (status), цитата (quote), ссылка (link) и заметка (aside), выглядит так:
if ( $wp_query->is_feed() ) {
$post_formats_to_exclude = array(
'post-format-status',
'post-format-quote',
'post-format-link',
'post-format-aside'
);
$extra_tax_query = array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => $post_formats_to_exclude,
'operator' => 'NOT IN'
);
$tax_query = $wp_query->get( 'tax_query' );
if ( is_array( $tax_query ) ) {
$tax_query = $tax_query + $extra_tax_query;
} else {
$tax_query = array( $extra_tax_query );
}
$wp_query->set( 'tax_query', $tax_query );
}
}
add_action( 'pre_get_posts', 'exclude_post_formats_from_feeds' );








