You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何一次性排除WordPress搜索结果中的Projects文章类型?

排除WordPress搜索结果中的Projects自定义文章类型

你不用再手动列举文章ID来排除,直接通过修改查询参数就能一次性移除所有Projects类型的内容,下面提供两种实用方案:

方案1:白名单模式(指定允许的文章类型)

这种方法直接定义搜索结果只包含你需要的文章类型,比如默认的文章(post)和页面(page),自动排除Projects及其他未指定的类型,代码更简洁:

function ss_search_filter( $query ) {
    if ( !$query->is_admin && $query->is_search && $query->is_main_query() ) {
        // 这里列出你想保留的文章类型,不包含'projects'即可
        $query->set( 'post_type', array( 'post', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'ss_search_filter' );

如果还有其他需要保留的自定义文章类型,直接加到数组里就行,比如array( 'post', 'page', 'your_other_cpt' )。

方案2:黑名单模式(仅排除指定类型)

如果你的网站有很多自定义文章类型,不想一个个列白名单,用这种方法直接排除Projects类型更高效:

function ss_search_filter( $query ) {
    if ( !$query->is_admin && $query->is_search && $query->is_main_query() ) {
        $current_types = $query->get( 'post_type' );
        
        // 默认搜索会包含所有公开文章类型,先获取这些类型
        if ( $current_types === 'any' ) {
            $current_types = get_post_types( array( 'public' => true ) );
        }
        
        // 如果是数组格式,移除projects类型
        if ( is_array( $current_types ) ) {
            $key = array_search( 'projects', $current_types );
            if ( $key !== false ) {
                unset( $current_types[$key] );
                $query->set( 'post_type', array_values( $current_types ) );
            }
        }
    }
}
add_action( 'pre_get_posts', 'ss_search_filter' );

注意事项

  • 确保你的Projects自定义文章类型的slug是projects,如果实际slug不同,把代码里的projects替换成对应的名称。
  • 代码可以添加到当前主题的functions.php文件,或者自定义插件中。

内容的提问来源于stack exchange,提问作者Bill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:46:08