php 高级搜索下拉框,wordpress高级搜索功能示例:按分类搜索

本教程更新时间:2017.08.31。

wordpress默认的搜索功能,仅有一个搜索框,功能单一,如何给搜索框增加搜索条件,提高搜索的准确性?

示例:按分类搜索。

让访客可以在搜索的时候,可以选择分类作为条件,同时,本教程也可更改为其它的各种条件。

效果如图:e35f9c1fb4c95c8dadfca7f12a9c4d9e.png

步骤一:改造搜索框

一般主题都会有一个searchform.php文件,该文件为搜索框的模板,也有的主题没有这个文件,而是使用了wordpress默认的搜索框,要改造搜索框的话,则需要建立searchform.php文件,以便自定义搜索框,阿树使用的searchform.php搜索框的内容和默认的搜索框是一样的,如下:

">

Search:

里面只有一个文本输入框,及一个提交按钮,我们需要在里面添加一个下拉选择框,先获取所有分类,然后循环将分类输出,如下:

$args = array(

'hide_empty'               => 0

);

$categories = get_categories( $args );

//上面的代码获取所有分类

?>

">

Category:

All Category

term_id; ?>"><?php  echo $category->name; ?>

Search:

如此一来,搜索框中便多了一个分类的下拉框,注意下拉框的name是cat。

步骤二:处理搜索条件

接下来就是搜索页面按条件处理搜索了。

网上很多教程都是直接修改搜索页模板search.php来达到目的。那样很不方便,多了很多条件判断不说,还需要另外查询文章,有的甚至直接用数据库操作语句从数据库中查找。

将下面代码添加到functions.php文件中即可:

function return_only_selected_category( $query ) {

//is_search判断搜索页面  !is_admin排除后台  $query->is_main_query()只影响主循环

if ( is_search() && !is_admin() && $query->is_main_query() ){

//有cat值传入

if(isset($_GET['cat']){

$term_id = (int)$_GET['cat']; //处理分类参数

if( $term_id ){

//分类查询的参数

$tax_query = array(

array(

'taxonomy'=>'category', //可换为自定义分类法

'field'=>'term_id',

'operator'=>'IN',

'terms'=>array($term_id)

)

);

$query->set( 'tax_query', $tax_query );

}

}

}

return $query;

}

add_filter('pre_get_posts', 'return_only_selected_category');

?>

通过pre_get_posts钩子去更改查询条件即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值