wordpress进阶教程(四十):文章筛选功能

2020-08-30 11:53:37

前几天一网友找我写一个筛选功能,他要做一个关于房产信息的网站,希望访客能在网页上根据条件筛选符合条件的文章。

根据他的功能要求,我给他的建议是,给每个筛选条件建立自定义分类法。比如他需求是根据四个条件来筛选,省、市、类型、价格。

其次,筛选页面我还是根据习惯使用了以前的伪静态方法,使访问的url地址类型为:www.shouce.ren/sift/、www.shouce.ren/sift/0_0_0_0、www.shouce.ren/sift/1_23_33_32/  后面以下划线分割的字符,就是我们要筛选的参数,分别为四个分类的ID。然后根据这四个ID值,来筛选符合条件的文章。最终效果:sift

要做这种功能,内容较多,文章最后面直接提供一个我已经写好了此功能的极简单主题,安装即可用。

注意:本文内容仅仅在伪静态状态下可用,win主机,不管你伪不伪静态,,,都勿用。

步骤一:建立自定义分类法。

本教程讲述的内容中用到了四个筛选条件:省、市、类型、价格。所以,我就给建立四个自定义分类法(使用默认的post)。使用下述代码,你可以直接复制粘贴到functions.php文件中。关于自定义分类法,你也可以访问wordpress进阶教程(三):创建自定义分类法

下列代码存放在本教程提供的主题中的 include/taxonomy.php文件中


//给post创建四个自定义分类法
add_action('init', 'ashu_post_type');
function ashu_post_type() {
  register_taxonomy(
    'province',
    'post',
    array(
      'label' => '省',
      'rewrite' => array( 'slug' => 'province' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'city',
    'post',
    array(
      'label' => '市',
      'rewrite' => array( 'slug' => 'city' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'genre',
    'post',
    array(
      'label' => '类型',
      'rewrite' => array( 'slug' => 'genre' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'price',
    'post',
    array(
      'label' => '价格',
      'rewrite' => array( 'slug' => 'price' ),
      'hierarchical' => true
    )
  );
}

//获取筛选页面的Url
function ashuwp_sift_link(){
  return home_url()."/sift";
}

/*
*添加query变量
*/
function ashuwp_query_vars($public_query_vars) {
    $public_query_vars[] = 'ashuwp_page';
    $public_query_vars[] = 'condition';
    return $public_query_vars;
}
/*
*sift页面的重写规则,三种url:
*shouce.ren/sift   shouce.ren/sift/0_0_0_0/    shouce.ren/sift/0_0_0_0/page/2
*/
function ashuwp_rewrite_rules( $wp_rewrite ){
  $new_rules = array(
    'sift/?$' => 'index.php?ashuwp_page=sift',
    'sift/([^/]+)/?$' => 'index.php?ashuwp_page=sift&condition='.$wp_rewrite->preg_index(1),
    'sift/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?ashuwp_page=sift&condition='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)
  );
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

/*
*载入模板规则
*用page-sift.php作为筛选页面的模板文件
*/
function ashuwp_template_redirect(){
  global $wp,$wp_query,$wp_rewrite;
  if( !isset($wp_query->query_vars['ashuwp_page']) )
    return;

  $reditect_page =  $wp_query->query_vars['ashuwp_page'];

  if ($reditect_page == "sift"){
    include(get_template_directory().'/page-sift.php');
    die();
  }
}

/*
*更新重写规则
*激活主题的时候
*/
function ashuwp_flush_rewrite_rules() {
  global $pagenow, $wp_rewrite;
  if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) )
    $wp_rewrite->flush_rules();
}

add_action( 'load-themes.php', 'ashuwp_flush_rewrite_rules' );
add_action('generate_rewrite_rules', 'ashuwp_rewrite_rules' );
add_action('query_vars', 'ashuwp_query_vars');
add_action("template_redirect", 'ashuwp_template_redirect');

筛选页面的内容较多,直接贴出,部分代码有注释。大概思路就是:
1. 先获取所有分类法的所有分类ID,有两个用途:判断从url获取的分类ID是否存在、输出筛选页面中筛选条件的url。
2.从url中获取四个ID参数。
3.输出筛选条件列表。注意判断当前访问、以及“不限”的条件
4.根据条件查询文章。

下面代码存在放本教程提供的主题的page-sift.php文件中

阿树工作室--筛选页面教程
<link rel='stylesheet' id='ashuwp-style-css'  href='' type='text/css' media='all' />

 treework.cn

阿树工作室--筛选页面教程

'province',
  'orderby'=>'id',
  'hide_empty'=>0
);
$province_ob = get_categories( $args );
$province_id = array();
foreach($province_ob as $province){
  $province_id[] = $province->term_id;
}

//1.2 获取所有city分类,将id放入 $city_id数组
$args = array(
  'taxonomy'=>'city',
  'orderby'=>'id',
  'hide_empty'=>0
);
$city_ob = get_categories( $args );
$city_id = array();
foreach($city_ob as $city){
  $city_id[] = $city->term_id;
}

//1.3 获取所有genre分类,将id放入 $genre_id数组
$args = array(
  'taxonomy'=>'genre',
  'orderby'=>'id',
  'hide_empty'=>0
);
$genre_ob = get_categories( $args );
$genre_id = array();
foreach($genre_ob as $genre){
  $genre_id[] = $genre->term_id;
}

//1.4 获取所有price分类,将id放入 $price_id数组
$args = array(
  'taxonomy'=>'price',
  'orderby'=>'id',
  'hide_empty'=>0
);
$price_ob = get_categories( $args );
$price_id = array();
foreach($price_ob as $price){
  $price_id[] = $price->term_id;
}

//2 参数处理
//2.1 页码
$wp_query->query_vars['paged'] > 1 ? $pagenum = $wp_query->query_vars['paged'] : $pagenum = 1;

/*2.2 从url中获取参数 即url中 0_0_0_0
*将获取到的四个参数放入 $cons 数组中
*/
global $wp_query;
if( isset($wp_query->query_vars['condition']) && $wp_query->query_vars['condition']!='' ){
  $condition = $wp_query->query_vars['condition'];
  $conditions = explode('_',$condition);

  $cons = array();

  if(isset($conditions[0])){
    $conditions[0] = (int)$conditions[0];
  }else{
    $conditions[0]=0;
  }

  if(isset($conditions[1])){
    $conditions[1] = (int)$conditions[1];
  }else{
    $conditions[1]=0;
  }

  if(isset($conditions[2])){
    $conditions[2] = (int)$conditions[2];
  }else{
    $conditions[2]=0;
  }

  if(isset($conditions[3])){
    $conditions[3] = (int)$conditions[3];
  }else{
    $conditions[3]=0;
  }

  //从url中获取到的各分类法分类ID是否真实存在
  if( in_array($conditions[0],$province_id) ){
    $cons[0]=$conditions[0];
  }else{
    $cons[0]=0;
  }
  if( in_array($conditions[1],$city_id) ){
    $cons[1]=$conditions[1];
  }else{
    $cons[1]=0;
  }
  if( in_array($conditions[2],$genre_id) ){
    $cons[2]=$conditions[2];
  }else{
    $cons[2]=0;
  }
  if( in_array($conditions[3],$price_id) ){
    $cons[3]=$conditions[3];
  }else{
    $cons[3]=0;
  }
  $sift_link = ashuwp_sift_link().'/'.$cons[0].'_'.$cons[1].'_'.$cons[2].'_'.$cons[3];
}else{
  $cons = array(0,0,0,0);
  $sift_link = ashuwp_sift_link().'/0_0_0_0';
}

?>

省:
<a  href="/0___/">不限

  <a href="/term_id; ?>___" term_id){ echo 'class="current"'; } ?>>name; ?>

市:<a  href="/_0__/">不限

    <a href="/_term_id; ?>__" term_id){ echo 'class="current"'; } ?>>name; ?>

类型:<a  href="/__0_/">不限

    <a href="/__term_id; ?>_" term_id){ echo 'class="current"'; } ?>>name; ?>

价格:<a  href="/___0/">不限

    <a href="/___term_id; ?>" term_id){ echo 'class="current"'; } ?>>name; ?>

 'AND',
);
//province
if( $cons[0] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'province',
        'field'=>'id',
        'terms'=>$cons[0]    );
}
//city
if( $cons[1] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'city',
        'field'=>'id',
        'terms'=>$cons[1]    );
}
//genre
if( $cons[2] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'genre',
        'field'=>'id',
        'terms'=>$cons[2]    );
}
//price
if( $cons[3] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'price',
        'field'=>'id',
        'terms'=>$cons[3]    );
}

$args = array(
    'paged' => $pagenum,
    'tax_query'=> $tax_query
);
global $ashuwp_query;
$ashuwp_query = new WP_Query( $args );
?>

共找到found_posts;?>个符合条件的内容

have_posts()) : ?>

have_posts()) : $ashuwp_query->the_post(); ?>

  <a href=""> $links.'/page/%#%',
  'format' => '/page/%#%',
  'prev_text' => '上一页',
  'next_text' => '下一页',
  'total' => $ashuwp_query->max_num_pages,
  'current' => $pagenum
) );
if ( $pagination ) {
    echo $pagination;
}
?>

阿树工作室,联系作者admin@treework.cn

添加完代码,应该在后台文章下面会多出四个自定义分类法:taxonomy

步骤二:添加筛选默认,重写规则。

1. 先在主题文件夹下面建立一个page-sift.php文件(文件名无要求,与下面代码中对应即可),这个文件将作为筛选页面的模板文件。

2.添加重写规则,使得用户访问类似www.shouce.ren/sift、www.shouce.ren/sift/0_0_0_0类型url时,不会出现404,而且能正确加载模板。

关于wordpress重写规则,你也可以访问wordpress进阶教程(16):添加一个重写规则,构建新页面初试

下列代码存放在本教程提供的主题中的 include/rewrite.php文件中:


//给post创建四个自定义分类法
add_action('init', 'ashu_post_type');
function ashu_post_type() {
  register_taxonomy(
    'province',
    'post',
    array(
      'label' => '省',
      'rewrite' => array( 'slug' => 'province' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'city',
    'post',
    array(
      'label' => '市',
      'rewrite' => array( 'slug' => 'city' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'genre',
    'post',
    array(
      'label' => '类型',
      'rewrite' => array( 'slug' => 'genre' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'price',
    'post',
    array(
      'label' => '价格',
      'rewrite' => array( 'slug' => 'price' ),
      'hierarchical' => true
    )
  );
}

//获取筛选页面的Url
function ashuwp_sift_link(){
  return home_url()."/sift";
}

/*
*添加query变量
*/
function ashuwp_query_vars($public_query_vars) {
    $public_query_vars[] = 'ashuwp_page';
    $public_query_vars[] = 'condition';
    return $public_query_vars;
}
/*
*sift页面的重写规则,三种url:
*shouce.ren/sift   shouce.ren/sift/0_0_0_0/    shouce.ren/sift/0_0_0_0/page/2
*/
function ashuwp_rewrite_rules( $wp_rewrite ){
  $new_rules = array(
    'sift/?$' => 'index.php?ashuwp_page=sift',
    'sift/([^/]+)/?$' => 'index.php?ashuwp_page=sift&condition='.$wp_rewrite->preg_index(1),
    'sift/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?ashuwp_page=sift&condition='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)
  );
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

/*
*载入模板规则
*用page-sift.php作为筛选页面的模板文件
*/
function ashuwp_template_redirect(){
  global $wp,$wp_query,$wp_rewrite;
  if( !isset($wp_query->query_vars['ashuwp_page']) )
    return;

  $reditect_page =  $wp_query->query_vars['ashuwp_page'];

  if ($reditect_page == "sift"){
    include(get_template_directory().'/page-sift.php');
    die();
  }
}

/*
*更新重写规则
*激活主题的时候
*/
function ashuwp_flush_rewrite_rules() {
  global $pagenow, $wp_rewrite;
  if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) )
    $wp_rewrite->flush_rules();
}

add_action( 'load-themes.php', 'ashuwp_flush_rewrite_rules' );
add_action('generate_rewrite_rules', 'ashuwp_rewrite_rules' );
add_action('query_vars', 'ashuwp_query_vars');
add_action("template_redirect", 'ashuwp_template_redirect');

筛选页面的内容较多,直接贴出,部分代码有注释。大概思路就是:
1. 先获取所有分类法的所有分类ID,有两个用途:判断从url获取的分类ID是否存在、输出筛选页面中筛选条件的url。
2.从url中获取四个ID参数。
3.输出筛选条件列表。注意判断当前访问、以及“不限”的条件
4.根据条件查询文章。

下面代码存在放本教程提供的主题的page-sift.php文件中

阿树工作室--筛选页面教程
<link rel='stylesheet' id='ashuwp-style-css'  href='' type='text/css' media='all' />

 treework.cn

阿树工作室--筛选页面教程

'province',
  'orderby'=>'id',
  'hide_empty'=>0
);
$province_ob = get_categories( $args );
$province_id = array();
foreach($province_ob as $province){
  $province_id[] = $province->term_id;
}

//1.2 获取所有city分类,将id放入 $city_id数组
$args = array(
  'taxonomy'=>'city',
  'orderby'=>'id',
  'hide_empty'=>0
);
$city_ob = get_categories( $args );
$city_id = array();
foreach($city_ob as $city){
  $city_id[] = $city->term_id;
}

//1.3 获取所有genre分类,将id放入 $genre_id数组
$args = array(
  'taxonomy'=>'genre',
  'orderby'=>'id',
  'hide_empty'=>0
);
$genre_ob = get_categories( $args );
$genre_id = array();
foreach($genre_ob as $genre){
  $genre_id[] = $genre->term_id;
}

//1.4 获取所有price分类,将id放入 $price_id数组
$args = array(
  'taxonomy'=>'price',
  'orderby'=>'id',
  'hide_empty'=>0
);
$price_ob = get_categories( $args );
$price_id = array();
foreach($price_ob as $price){
  $price_id[] = $price->term_id;
}

//2 参数处理
//2.1 页码
$wp_query->query_vars['paged'] > 1 ? $pagenum = $wp_query->query_vars['paged'] : $pagenum = 1;

/*2.2 从url中获取参数 即url中 0_0_0_0
*将获取到的四个参数放入 $cons 数组中
*/
global $wp_query;
if( isset($wp_query->query_vars['condition']) && $wp_query->query_vars['condition']!='' ){
  $condition = $wp_query->query_vars['condition'];
  $conditions = explode('_',$condition);

  $cons = array();

  if(isset($conditions[0])){
    $conditions[0] = (int)$conditions[0];
  }else{
    $conditions[0]=0;
  }

  if(isset($conditions[1])){
    $conditions[1] = (int)$conditions[1];
  }else{
    $conditions[1]=0;
  }

  if(isset($conditions[2])){
    $conditions[2] = (int)$conditions[2];
  }else{
    $conditions[2]=0;
  }

  if(isset($conditions[3])){
    $conditions[3] = (int)$conditions[3];
  }else{
    $conditions[3]=0;
  }

  //从url中获取到的各分类法分类ID是否真实存在
  if( in_array($conditions[0],$province_id) ){
    $cons[0]=$conditions[0];
  }else{
    $cons[0]=0;
  }
  if( in_array($conditions[1],$city_id) ){
    $cons[1]=$conditions[1];
  }else{
    $cons[1]=0;
  }
  if( in_array($conditions[2],$genre_id) ){
    $cons[2]=$conditions[2];
  }else{
    $cons[2]=0;
  }
  if( in_array($conditions[3],$price_id) ){
    $cons[3]=$conditions[3];
  }else{
    $cons[3]=0;
  }
  $sift_link = ashuwp_sift_link().'/'.$cons[0].'_'.$cons[1].'_'.$cons[2].'_'.$cons[3];
}else{
  $cons = array(0,0,0,0);
  $sift_link = ashuwp_sift_link().'/0_0_0_0';
}

?>

省:
<a  href="/0___/">不限

  <a href="/term_id; ?>___" term_id){ echo 'class="current"'; } ?>>name; ?>

市:<a  href="/_0__/">不限

    <a href="/_term_id; ?>__" term_id){ echo 'class="current"'; } ?>>name; ?>

类型:<a  href="/__0_/">不限

    <a href="/__term_id; ?>_" term_id){ echo 'class="current"'; } ?>>name; ?>

价格:<a  href="/___0/">不限

    <a href="/___term_id; ?>" term_id){ echo 'class="current"'; } ?>>name; ?>

 'AND',
);
//province
if( $cons[0] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'province',
        'field'=>'id',
        'terms'=>$cons[0]    );
}
//city
if( $cons[1] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'city',
        'field'=>'id',
        'terms'=>$cons[1]    );
}
//genre
if( $cons[2] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'genre',
        'field'=>'id',
        'terms'=>$cons[2]    );
}
//price
if( $cons[3] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'price',
        'field'=>'id',
        'terms'=>$cons[3]    );
}

$args = array(
    'paged' => $pagenum,
    'tax_query'=> $tax_query
);
global $ashuwp_query;
$ashuwp_query = new WP_Query( $args );
?>

共找到found_posts;?>个符合条件的内容

have_posts()) : ?>

have_posts()) : $ashuwp_query->the_post(); ?>

  <a href=""> $links.'/page/%#%',
  'format' => '/page/%#%',
  'prev_text' => '上一页',
  'next_text' => '下一页',
  'total' => $ashuwp_query->max_num_pages,
  'current' => $pagenum
) );
if ( $pagination ) {
    echo $pagination;
}
?>

阿树工作室,联系作者admin@treework.cn

由此,添加完代码后,你可以尝试重新启用你的主题,看访问类似www.shouce.ren/sift地址的时候是否会出现404,如果是空白页,那就对了,因为我们的筛选页面模板page-sift.php还没有添加内容,所以是空白页。

步骤三、筛选页面模板

前面步骤二中,我们已经为筛选页面建立了页面模板page-sift.php,而且使用wordpress的url重写使得我们的筛选url能正确载入模板。接下来就要完善筛选页面的内容。


//给post创建四个自定义分类法
add_action('init', 'ashu_post_type');
function ashu_post_type() {
  register_taxonomy(
    'province',
    'post',
    array(
      'label' => '省',
      'rewrite' => array( 'slug' => 'province' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'city',
    'post',
    array(
      'label' => '市',
      'rewrite' => array( 'slug' => 'city' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'genre',
    'post',
    array(
      'label' => '类型',
      'rewrite' => array( 'slug' => 'genre' ),
      'hierarchical' => true
    )
  );

  register_taxonomy(
    'price',
    'post',
    array(
      'label' => '价格',
      'rewrite' => array( 'slug' => 'price' ),
      'hierarchical' => true
    )
  );
}

//获取筛选页面的Url
function ashuwp_sift_link(){
  return home_url()."/sift";
}

/*
*添加query变量
*/
function ashuwp_query_vars($public_query_vars) {
    $public_query_vars[] = 'ashuwp_page';
    $public_query_vars[] = 'condition';
    return $public_query_vars;
}
/*
*sift页面的重写规则,三种url:
*shouce.ren/sift   shouce.ren/sift/0_0_0_0/    shouce.ren/sift/0_0_0_0/page/2
*/
function ashuwp_rewrite_rules( $wp_rewrite ){
  $new_rules = array(
    'sift/?$' => 'index.php?ashuwp_page=sift',
    'sift/([^/]+)/?$' => 'index.php?ashuwp_page=sift&condition='.$wp_rewrite->preg_index(1),
    'sift/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?ashuwp_page=sift&condition='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)
  );
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

/*
*载入模板规则
*用page-sift.php作为筛选页面的模板文件
*/
function ashuwp_template_redirect(){
  global $wp,$wp_query,$wp_rewrite;
  if( !isset($wp_query->query_vars['ashuwp_page']) )
    return;

  $reditect_page =  $wp_query->query_vars['ashuwp_page'];

  if ($reditect_page == "sift"){
    include(get_template_directory().'/page-sift.php');
    die();
  }
}

/*
*更新重写规则
*激活主题的时候
*/
function ashuwp_flush_rewrite_rules() {
  global $pagenow, $wp_rewrite;
  if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) )
    $wp_rewrite->flush_rules();
}

add_action( 'load-themes.php', 'ashuwp_flush_rewrite_rules' );
add_action('generate_rewrite_rules', 'ashuwp_rewrite_rules' );
add_action('query_vars', 'ashuwp_query_vars');
add_action("template_redirect", 'ashuwp_template_redirect');

筛选页面的内容较多,直接贴出,部分代码有注释。大概思路就是:
1. 先获取所有分类法的所有分类ID,有两个用途:判断从url获取的分类ID是否存在、输出筛选页面中筛选条件的url。
2.从url中获取四个ID参数。
3.输出筛选条件列表。注意判断当前访问、以及“不限”的条件
4.根据条件查询文章。

下面代码存在放本教程提供的主题的page-sift.php文件中

阿树工作室--筛选页面教程
<link rel='stylesheet' id='ashuwp-style-css'  href='' type='text/css' media='all' />

 treework.cn

阿树工作室--筛选页面教程

'province',
  'orderby'=>'id',
  'hide_empty'=>0
);
$province_ob = get_categories( $args );
$province_id = array();
foreach($province_ob as $province){
  $province_id[] = $province->term_id;
}

//1.2 获取所有city分类,将id放入 $city_id数组
$args = array(
  'taxonomy'=>'city',
  'orderby'=>'id',
  'hide_empty'=>0
);
$city_ob = get_categories( $args );
$city_id = array();
foreach($city_ob as $city){
  $city_id[] = $city->term_id;
}

//1.3 获取所有genre分类,将id放入 $genre_id数组
$args = array(
  'taxonomy'=>'genre',
  'orderby'=>'id',
  'hide_empty'=>0
);
$genre_ob = get_categories( $args );
$genre_id = array();
foreach($genre_ob as $genre){
  $genre_id[] = $genre->term_id;
}

//1.4 获取所有price分类,将id放入 $price_id数组
$args = array(
  'taxonomy'=>'price',
  'orderby'=>'id',
  'hide_empty'=>0
);
$price_ob = get_categories( $args );
$price_id = array();
foreach($price_ob as $price){
  $price_id[] = $price->term_id;
}

//2 参数处理
//2.1 页码
$wp_query->query_vars['paged'] > 1 ? $pagenum = $wp_query->query_vars['paged'] : $pagenum = 1;

/*2.2 从url中获取参数 即url中 0_0_0_0
*将获取到的四个参数放入 $cons 数组中
*/
global $wp_query;
if( isset($wp_query->query_vars['condition']) && $wp_query->query_vars['condition']!='' ){
  $condition = $wp_query->query_vars['condition'];
  $conditions = explode('_',$condition);

  $cons = array();

  if(isset($conditions[0])){
    $conditions[0] = (int)$conditions[0];
  }else{
    $conditions[0]=0;
  }

  if(isset($conditions[1])){
    $conditions[1] = (int)$conditions[1];
  }else{
    $conditions[1]=0;
  }

  if(isset($conditions[2])){
    $conditions[2] = (int)$conditions[2];
  }else{
    $conditions[2]=0;
  }

  if(isset($conditions[3])){
    $conditions[3] = (int)$conditions[3];
  }else{
    $conditions[3]=0;
  }

  //从url中获取到的各分类法分类ID是否真实存在
  if( in_array($conditions[0],$province_id) ){
    $cons[0]=$conditions[0];
  }else{
    $cons[0]=0;
  }
  if( in_array($conditions[1],$city_id) ){
    $cons[1]=$conditions[1];
  }else{
    $cons[1]=0;
  }
  if( in_array($conditions[2],$genre_id) ){
    $cons[2]=$conditions[2];
  }else{
    $cons[2]=0;
  }
  if( in_array($conditions[3],$price_id) ){
    $cons[3]=$conditions[3];
  }else{
    $cons[3]=0;
  }
  $sift_link = ashuwp_sift_link().'/'.$cons[0].'_'.$cons[1].'_'.$cons[2].'_'.$cons[3];
}else{
  $cons = array(0,0,0,0);
  $sift_link = ashuwp_sift_link().'/0_0_0_0';
}

?>

省:
<a  href="/0___/">不限

  <a href="/term_id; ?>___" term_id){ echo 'class="current"'; } ?>>name; ?>

市:<a  href="/_0__/">不限

    <a href="/_term_id; ?>__" term_id){ echo 'class="current"'; } ?>>name; ?>

类型:<a  href="/__0_/">不限

    <a href="/__term_id; ?>_" term_id){ echo 'class="current"'; } ?>>name; ?>

价格:<a  href="/___0/">不限

    <a href="/___term_id; ?>" term_id){ echo 'class="current"'; } ?>>name; ?>

 'AND',
);
//province
if( $cons[0] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'province',
        'field'=>'id',
        'terms'=>$cons[0]    );
}
//city
if( $cons[1] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'city',
        'field'=>'id',
        'terms'=>$cons[1]    );
}
//genre
if( $cons[2] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'genre',
        'field'=>'id',
        'terms'=>$cons[2]    );
}
//price
if( $cons[3] != 0 ){
    $tax_query[] = array(
        'taxonomy'=>'price',
        'field'=>'id',
        'terms'=>$cons[3]    );
}

$args = array(
    'paged' => $pagenum,
    'tax_query'=> $tax_query
);
global $ashuwp_query;
$ashuwp_query = new WP_Query( $args );
?>

共找到found_posts;?>个符合条件的内容

have_posts()) : ?>

have_posts()) : $ashuwp_query->the_post(); ?>

  <a href=""> $links.'/page/%#%',
  'format' => '/page/%#%',
  'prev_text' => '上一页',
  'next_text' => '下一页',
  'total' => $ashuwp_query->max_num_pages,
  'current' => $pagenum
) );
if ( $pagination ) {
    echo $pagination;
}
?>

阿树工作室,联系作者admin@treework.cn

文件下载

下载的文件为一个极简单的主题,运行一下步骤:

1.下载主题并安装,并设置好伪静态

2.添加几篇文章到自定义分类法中

3.直接访问筛选页面的url,比如www.shouce.ren/sift 或者www.shouce.ren/sift/0_1_1_0等等。

好了,阿树只能帮网友们到这了。

阿树工作室-筛选功能