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

文 / @WordPress主题

WordPress搜索特定文章类型的方法

小本本之前在做WordPress网站开发的时候,遇到了一个问题:如果我只想搜索某个特定的文章类型,该怎么办呢?

刚开始小本本以为这个问题很简单,毕竟WordPress搜索功能很强大,只需要一些简单的设置就可以轻松实现。但是好景不长,小本本发现WordPress搜索默认的搜索内容是文章或页面,还有自定义文章类型时定义的前台可搜索的文章,而不是某个特定的文章类型,这就让小本本有点犯愁了。

后来,小本本研究了一下WordPress搜索功能的$query对象,发现只需要稍微修改一下这个对象就可以解决问题了。

如何设置WordPress只搜索特定的文章类型?

下面是小本本用过的一段代码,设置了WordPress只搜索“Product”文章类型的文章。

//设置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,这个参数就是自定义文章类型的时候定义的文章类型的slug参数。

如果你想搜索多个特定的文章类型,只需要稍微修改一下上面的代码就可以了:

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

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

PS:如果你还不知道各个文章类型的slug参数是什么,可以在WordPress后台的左边栏进入“项目”页面,查看各个文章类型的“slug”参数。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。