如何从默认搜索中排除特定的POST_TYPE?

时间:2020-05-04 作者:D_P

我试图从默认WP搜索中排除WooCommerce产品,但我需要保留所有其他帖子类型,包括CPT和将来创建的CPT。我正在尝试:

function searchFilter($query) {
    if (!$query->is_admin && $query->is_search) {
        $query->set(\'post_type\', array(\'post\', \'page\', \'CPT\'));
    }
    return $query;
}
add_filter(\'pre_get_posts\', \'searchFilter\');
在上面的代码中,我可以设置post_type 我想选择什么帖子类型。但我只想排除“products”post\\u类型。有没有办法创建这样的参数?

1 个回复
最合适的回答,由SO网友:Wacław Jacek 整理而成

如果要从网站的所有前端搜索中排除“产品”帖子类型(=WooCommerce产品),可以使用以下代码:

function my_adjust_post_type_args( $args, $post_type ) {
    if ( \'product\' === $post_type ) {
        $args[\'exclude_from_search\'] = true;
    }

    return $args;
}

add_filter( \'register_post_type_args\', \'my_adjust_post_type_args\', 10, 2 );
注册“product”post类型时,它会修改“exclude\\u from\\u search”参数。查看文档了解register_post_type() function 了解更多信息。

相关推荐

Live search by custom tag

实时搜索:$the_query = new WP_Query( array( \'s\' => esc_attr( $_POST[\'keyword\'] ), \'post_type\' => \'custom_type\', \'sentence\' => \'true\' )); if( $the_query->have_posts() ) : while( $the_query->have_posts() ): $the_query->t