在WordPress中,如果你想要在搜索中排除特定分类,你可以使用pre_get_posts
钩子来修改查询。以下是一个如何实现的例子:
// 在functions.php或自定义插件中添加以下代码
add_action( 'pre_get_posts', 'exclude_category_from_search' );
function exclude_category_from_search( $query ) {
if ( !$query->is_main_query() || !$query->is_search() ) {
return;
}
// 将特定分类ID替换为你想要排除的分类ID
$exclude_categories = array( 1, 2, 3 ); // 分类ID数组
if ( $query->is_search() && !$query->is_admin ) {
$query->set( 'cat', '-' . implode( ', -', $exclude_categories ) );
}
}
function exclude_category_from_search($query) {
if (!$query->is_main_query() || !$query->is_search()) {
return;
}
// 排除分类ID列表,用逗号分隔
$excluded_categories = array(1,2,3); // 将1, 2, 3替换成你想要排除的分类ID
$query->set('cat', '-' . implode(',-', $excluded_categories));
return $query;
}
add_filter('pre_get_posts', 'exclude_category_from_search');
在这个例子中,exclude_category_from_search
函数会在WordPress查询之前运行。它检查是否是主查询和搜索查询,然后排除特定的分类ID。你需要将$exclude_categories
数组中的分类ID替换为你希望排除的分类。
注意:这段代码应该放在你的WordPress主题的functions.php
文件中,或者放在一个专门的插件中。如果你在插件中实现,请确保在插件被激活时添加钩子。