通过使用功能强大的pre_get_posts
钩
考虑以下放置在主题中的示例functions.php
文件:
add_action( \'pre_get_posts\', function ( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// Exclude Terms by ID from Search and Archive Listings
if ( is_search() || is_tax( \'marque\' ) ) {
$tax_query = array([
\'taxonomy\' => \'marque\',
\'field\' => \'term_id\',
\'terms\' => [ 67, 70 ],
\'operator\' => \'NOT IN\',
]);
$query->set( \'tax_query\', $tax_query );
}
}, 11, 1 );
此操作将从任何搜索结果或存档列表中排除给定分类法(标记)中的术语(67、70)。
自$query
对象是通过引用传递的,我们不需要声明全局变量或返回值。因此,从函数内部对对象所做的任何更改都会立即对原始对象进行更改。