您可以使用令人難以置信的強大pre_get_posts
掛鉤來排除帖子。期限在自定義分類
使用您的命名filter
一個自定義分類和premium
術語塞的例子,下面的代碼將排除從RSS提要的帖子:
add_action('pre_get_posts', function ($query) {
if (is_admin() || ! $query->is_main_query()) {
return;
}
// Exclude Terms by Slug from RSS Feed
if ($query->is_feed()) {
$tax_query = array([
'taxonomy' => 'filter',
'field' => 'slug',
'terms' => [ 'premium' ],
'operator' => 'NOT IN',
]);
$query->set('tax_query', $tax_query);
}
}, 11, 1);
如果您擔心有關分類術語slug被更改,您可以指定term_id
代替 - 這是一個可能是更安全的選擇:
$tax_query = array([
'taxonomy' => 'filter',
'field' => 'term_id',
'terms' => [ '1234' ],
'operator' => 'NOT IN',
]);
作爲額外的獎勵,如果你想排除具有在自定義分類任何條款的所有帖子,下面可以使用:
$taxonomy = 'filter';
$terms = get_terms([
'taxonomy' => $taxonomy,
'fields' => 'ids',
]);
$tax_query = array([
'taxonomy' => $taxonomy,
'field' => 'term_id',
'terms' => (array) $terms,
'operator' => 'NOT IN',
]);
請確保將此代碼片段放置在主題的functions.php
文件中,因爲它在WordPress的生命週期中運行得很早。請享用!
來源
2017-08-03 16:52:07
rjb