register_post_type()
有一个argument 可以设置为指定要搜索的帖子类型,从而排除不需要的帖子类型。这是最简单的方法,只有一行:
\'exclude_from_search\' = true,
除此之外,您还可以通过
pre_get_posts
然后修改搜索,指定您关注的帖子类型:
add_filter(\'pre_get_posts\',function ($query) {
if ($query->is_search && !is_admin() )
$query->set(\'post_type\',array(\'post\',\'page\'));
return $query;
});
如果您死心塌地地想使用“隐藏”一词,尽管我不推荐使用它,因为它包含的代码越多,用户出错的可能性就越大,那么您可以这样做:
add_action( \'pre_get_posts\', function ( $query ) {
global $wp_the_query;
if($query === $wp_the_query && $query->is_search() && !is_admin()) {
$tax_query = array(
array(
\'taxonomy\' => \'your_custom_tax_name\',
\'field\' => \'slug\',
\'terms\' => \'hidden\',
\'operator\' => \'NOT IN\',
)
);
$query->set( \'tax_query\', $tax_query );
}
});