自定义 WordPress 前台搜索文章类型

WordPress 前台搜索默认的搜索内容是文章或页面,还有自定义文章类型时定义的前台可搜索的文章,如果我们只想搜索某个文章类型怎么办?当然不能凉拌,其实只需要稍微修改一下WordPress 搜索功能的$query 对象就可以了,我们来看一下代码。

// 设置WooCommerce只搜索 'product' 文章类型下面的文章
if ( !is_admin() ) {
function searchfilter($query) {
 //限定对搜索查询和非后台查询设置
 if ($query->is_search && !is_admin() ) {
     $query->set('post_type',array('product'));
 }
return $query;
}
add_filter('pre_get_posts','searchfilter');
}

注意关键的地方product,我们在哪里找这个参数呢?在下图中。

其实,如果你对 WordPress 自定义文章类型的方法比较熟悉,这个参数就是自定义文章类型的时候定义的文章类型的slug参数。

上面的代码限制了前台搜索只能搜索 “Product” 文章类型的文章,如果我们需要搜索 “Product” 和“文章”下面的文章(有点绕)?只需要稍微修改一下上面的代码就可以了。

$query->set('post_type',array('product','post'));

需要注意的是:这个代码的作用在前台是全局性的,在前台任何地方进行搜索都会受到这段代码的影响,但是不会影响到后台搜索功能,请放心使用。当然,如果你真想对后台也下手,把上面代码中的!is_admin()去掉就可以了。