位置:首页 > CMS教程 > WordPress

wordpress 网站多条件筛选功能制作(纯代码)(wordpress筛选功能)

发布时间:2023-04-10 09:27:45

文章来源:快乐收录网

访问次数:

 

我们经常在网上看到一些网站,拥有多重筛选功能。例如一些房产网站上,就会经常使用多条件筛选功能,方便用户进行筛选房源。效果如下图:coU快乐收录网

coU快乐收录网

自己做网站时,如何制作这样的多条件筛选功能呢?下面学做网站论坛就来介绍一下这种多条件筛选功能制作方法。(如果觉得代码太麻烦,可以直接安装WordPress中文多条件多重搜索筛选插件senior-choose来实现本功能)coU快乐收录网

方法/步骤

创建自定义分类,增加多个筛选条件。复制下面的代码,你可以直接复制粘贴到functions.php文件中。
//给post创建四个自定义分类法 add_action(\

init\, \ashu_post_type\);coU快乐收录网

function ashu_post_type() {coU快乐收录网

  register_taxonomy(coU快乐收录网

    \province\,coU快乐收录网

    \post\,coU快乐收录网

    array(coU快乐收录网

      \label\ => \省\,coU快乐收录网

\rewrite\ => array( \slug\ => \province\ ),coU快乐收录网

      \hierarchical\ => truecoU快乐收录网

    )coU快乐收录网

  );coU快乐收录网

  register_taxonomy(coU快乐收录网

    \city\,coU快乐收录网

    \post\,coU快乐收录网

    array(coU快乐收录网

      \label\ => \市\,coU快乐收录网

\rewrite\ => array( \slug\ => \city\ ),coU快乐收录网

      \hierarchical\ => truecoU快乐收录网

    )coU快乐收录网

  );coU快乐收录网

  register_taxonomy(coU快乐收录网

    \genre\,coU快乐收录网

    \post\,coU快乐收录网

    array(coU快乐收录网

\label\ => \类型\,coU快乐收录网

      \rewrite\ => array( \slug\ => \genre\ ),coU快乐收录网

      \hierarchical\ => truecoU快乐收录网

    )coU快乐收录网

  );coU快乐收录网

  register_taxonomy(coU快乐收录网

\price\,coU快乐收录网

    \post\,coU快乐收录网

    array(coU快乐收录网

      \label\ => \价格\,coU快乐收录网

      \rewrite\ => array( \slug\ => \price\ ),coU快乐收录网

      \hierarchical\ => truecoU快乐收录网

    )coU快乐收录网

  );coU快乐收录网

}
添加完以上代码后,应该在后台左侧菜单会多出四个自定义分类法:在自己网站的主题文件夹下面建立一个page-sift.php文件,这个文件将作为筛选页面的模板文件。 添加重写规则,使得wordpress 网站多条件筛选功能页面也可以伪静态。将下列代码存放到 include/rewrite.php文件中:
//获取筛选页面的Url function ashuwp_sift_link(){   returnhome_url()."/sift"; }

/*coU快乐收录网

*添加query变量coU快乐收录网

*/
function ashuwp_query_vars($public_query_vars) {     $public_query_vars[] = ashuwp_page;     $public_query_vars[] = condition;     return $public_query_vars; }

/*coU快乐收录网

*sift页面的重写规则,三种url:coU快乐收录网

*ashuwp.com/sift   ashuwp.com/sift/0_0_0_0/    ashuwp.com/sift/0_0_0_0/page/2coU快乐收录网

*/
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; }

/*coU快乐收录网

*载入模板规则coU快乐收录网

*用page-sift.php作为筛选页面的模板文件coU快乐收录网

*/
functionashuwp_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();   } }

/*coU快乐收录网

*更新重写规则coU快乐收录网

*激活主题的时候coU快乐收录网

*/
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);
将下面代码存放在步骤三新建的page-sift.php文件中;
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>筛选页面教程</title> <link rel=stylesheet id=ashuwp-style-css  href=<?php echo get_stylesheet_uri(); ?>

type=text/css media=all />coU快乐收录网

</head> <body> <div id="site-page"> <div id="header"> <h1 id="logo">  <a href="http://www.treework.cn">treework.cn</a> </h1> <h2 class="align-cenetr">阿树工作室--筛选页面教程</h2> </div> <div class="container content"> <?php //1.1 获取所有province分类,将id放入 $province_id数组 $args = array(   taxonomy=>

province,coU快乐收录网

  orderby=>id,coU快乐收录网

  hide_empty=>0coU快乐收录网

);coU快乐收录网

$province_ob = get_categories( $args );coU快乐收录网

$province_id = array();coU快乐收录网

foreach($province_ob as $province){coU快乐收录网

$province_id[] = $province->term_id;coU快乐收录网

}coU快乐收录网

//1.2 获取所有city分类,将id放入 $city_id数组coU快乐收录网

$args = array(coU快乐收录网

  taxonomy=>city,coU快乐收录网

orderby=>id,coU快乐收录网

  hide_empty=>0coU快乐收录网

);coU快乐收录网

$city_ob = get_categories( $args );coU快乐收录网

$city_id = array();coU快乐收录网

foreach($city_ob as $city){coU快乐收录网

  $city_id[] = $city->term_id;coU快乐收录网

}coU快乐收录网

//1.3 获取所有genre分类,将id放入 $genre_id数组coU快乐收录网

$args = array(coU快乐收录网

  taxonomy=>genre,coU快乐收录网

orderby=>id,coU快乐收录网

  hide_empty=>0coU快乐收录网

);coU快乐收录网

$genre_ob = get_categories( $args );coU快乐收录网

$genre_id = array();coU快乐收录网

foreach($genre_ob as $genre){coU快乐收录网

  $genre_id[] = $genre->term_id;coU快乐收录网

}coU快乐收录网

//1.4 获取所有price分类,将id放入 $price_id数组coU快乐收录网

$args = array(coU快乐收录网

taxonomy=>price,coU快乐收录网

  orderby=>id,coU快乐收录网

  hide_empty=>0coU快乐收录网

);coU快乐收录网

$price_ob = get_categories( $args );coU快乐收录网

$price_id = array();coU快乐收录网

foreach($price_ob as $price){coU快乐收录网

  $price_id[] = $price->term_id;coU快乐收录网

}coU快乐收录网

//2 参数处理coU快乐收录网

//2.1 页码coU快乐收录网

$wp_query->query_vars[paged] > 1 ? $pagenum = $wp_query->query_vars[paged] : $pagenum = 1;coU快乐收录网

/*2.2 从url中获取参数 即url中 0_0_0_0coU快乐收录网

*将获取到的四个参数放入 $cons 数组中coU快乐收录网

*/coU快乐收录网

global $wp_query;coU快乐收录网

if( isset($wp_query->query_vars[condition]) && $wp_query->query_vars[condition]!= ){   $condition = $wp_query->query_vars[condition];

  $conditions = explode(_,$condition);coU快乐收录网

$cons = array();coU快乐收录网

  if(isset($conditions[0])){coU快乐收录网

    $conditions[0] = (int)$conditions[0];coU快乐收录网

  }else{coU快乐收录网

    $conditions[0]=0;coU快乐收录网

  }coU快乐收录网

if(isset($conditions[1])){coU快乐收录网

    $conditions[1] = (int)$conditions[1];coU快乐收录网

  }else{coU快乐收录网

    $conditions[1]=0;coU快乐收录网

  }coU快乐收录网

if(isset($conditions[2])){coU快乐收录网

    $conditions[2] = (int)$conditions[2];coU快乐收录网

  }else{coU快乐收录网

    $conditions[2]=0;coU快乐收录网

  }coU快乐收录网

  if(isset($conditions[3])){coU快乐收录网

$conditions[3] = (int)$conditions[3];coU快乐收录网

  }else{coU快乐收录网

    $conditions[3]=0;coU快乐收录网

  }coU快乐收录网

  //从url中获取到的各分类法分类ID是否真实存在coU快乐收录网

if( in_array($conditions[0],$province_id) ){coU快乐收录网

    $cons[0]=$conditions[0];coU快乐收录网

  }else{coU快乐收录网

    $cons[0]=0;coU快乐收录网

  }coU快乐收录网

if( in_array($conditions[1],$city_id) ){coU快乐收录网

    $cons[1]=$conditions[1];coU快乐收录网

  }else{coU快乐收录网

    $cons[1]=0;coU快乐收录网

  }coU快乐收录网

  if( in_array($conditions[2],$genre_id) ){coU快乐收录网

$cons[2]=$conditions[2];coU快乐收录网

  }else{coU快乐收录网

    $cons[2]=0;coU快乐收录网

  }coU快乐收录网

  if( in_array($conditions[3],$price_id) ){coU快乐收录网

    $cons[3]=$conditions[3];coU快乐收录网

}else{coU快乐收录网

    $cons[3]=0;coU快乐收录网

  }coU快乐收录网

  $sift_link = ashuwp_sift_link()./.$cons[0]._.$cons[1]._.$cons[2]._.$cons[3];coU快乐收录网

}else{coU快乐收录网

$cons = array(0,0,0,0);coU快乐收录网

  $sift_link = ashuwp_sift_link()./0_0_0_0;coU快乐收录网

}coU快乐收录网

?>coU快乐收录网

<div class="sift_query"> <div class="sift_cons"> <div class="sift_li"> <span>省:</span> <a <?php if($cons[0]==0){ echo class="current"; } ?> href="<?php echo ashuwp_sift_link(); ?>/0_<?php echo $cons[1];?>_<?php echo $cons[2];?>_<?php echo $cons[3];?>/">不限</a> <?php foreach( $province_ob as $province ){ ?>   <a href="<?php echo ashuwp_sift_link(); ?>/<?php echo $province->term_id; ?>_<?php echo $cons[1]; ?>_<?php echo $cons[2]; ?>_<?php echo $cons[3];?>" <?php if($cons[0] == $province->term_id){ echo class="current"; } ?>><?php echo $province->name; ?></a> <?php} ?> </div> <div class="sift_li"><span>市:</span><a <?php if($cons[1] == 0){ echo class="current"; } ?>href="<?php echo ashuwp_sift_link(); ?>/<?php echo $cons[0];?>_0_<?php echo $cons[2]; ?>_<?php echo $cons[3];?>/">不限</a> <?php foreach( $city_ob as $city ){ ?>     <a href="<?php echo ashuwp_sift_link(); ?>/<?php echo $cons[0]; ?>_<?php echo $city->term_id; ?>_<?php echo $cons[2]; ?>_<?php echo $cons[3];?>" <?php if($cons[1] == $city->term_id){ echo class="current"; } ?>><?php echo $city->name; ?></a> <?php } ?> </div> <div class="sift_li"><span>类型:</span><a <?php if($cons[2] == 0){ echo class="current"; } ?> href="<?php echo ashuwp_sift_link(); ?>/<?php echo $cons[0];?>_<?php echo $cons[1]; ?>_0_<?php echo $cons[3];?>/">不限</a> <?php foreach( $genre_ob as $genre ){ ?>     <a href="<?php echo ashuwp_sift_link(); ?>/<?php echo $cons[0]; ?>_<?php echo $cons[1]; ?>_<?php echo $genre->term_id; ?>_<?php echo $cons[3];?>" <?php if($cons[2] == $genre->term_id){ echo class="current"; } ?>><?php echo $genre->name; ?></a> <?php } ?> </div> <div class="sift_li"><span>价格:</span><a <?php if($cons[3] == 0){ echo class="current"; } ?> href="<?php echo ashuwp_sift_link(); ?>/<?php echo $cons[0];?>_<?php echo $cons[1]; ?>_<?php echo $cons[2]; ?>_0/">不限</a> <?php foreach( $price_ob as $price ){ ?>     <a href="<?php echo ashuwp_sift_link(); ?>/<?php echo $cons[0]; ?>_<?php echo $cons[1]; ?>_<?php echo $cons[2]; ?>_<?php echo $price->term_id; ?>" <?php if($cons[3] ==$price->term_id){ echo class="current"; } ?>><?php echo $price->name; ?></a> <?php } ?> </div> </div> <?php //代码来源:学做网站论坛https://www.xuewangzhan.net/ 将获取到的参数组合为query_posts的参数 $tax_query = array(     relation=>

AND,coU快乐收录网

);coU快乐收录网

//provincecoU快乐收录网

if( $cons[0] != 0 ){coU快乐收录网

    $tax_query[] = array(coU快乐收录网

        taxonomy=>province,coU快乐收录网

        field=>id,coU快乐收录网

        terms=>$cons[0]coU快乐收录网

    );coU快乐收录网

}coU快乐收录网

//citycoU快乐收录网

if( $cons[1] != 0 ){coU快乐收录网

    $tax_query[] = array(coU快乐收录网

        taxonomy=>city,coU快乐收录网

        field=>id,coU快乐收录网

        terms=>$cons[1]coU快乐收录网

    );coU快乐收录网

}coU快乐收录网

//genrecoU快乐收录网

if( $cons[2] != 0 ){coU快乐收录网

    $tax_query[] = array(coU快乐收录网

        taxonomy=>genre,coU快乐收录网

        field=>id,coU快乐收录网

        terms=>$cons[2]coU快乐收录网

    );coU快乐收录网

}coU快乐收录网

//pricecoU快乐收录网

if( $cons[3] != 0 ){coU快乐收录网

    $tax_query[] = array(coU快乐收录网

        taxonomy=>price,coU快乐收录网

        field=>id,coU快乐收录网

        terms=>$cons[3]coU快乐收录网

    );coU快乐收录网

}coU快乐收录网

$args = array(coU快乐收录网

    paged => $pagenum,coU快乐收录网

tax_query=> $tax_querycoU快乐收录网

);coU快乐收录网

global $ashuwp_query;coU快乐收录网

$ashuwp_query = new WP_Query( $args );coU快乐收录网

?>coU快乐收录网

<div class="query_count">共找到<?php echo $ashuwp_query->found_posts;?>个符合条件的内容</div> </div> <?php if($ashuwp_query->

have_posts()) : ?>coU快乐收录网

<div id="post_list"> <?php while($ashuwp_query->

have_posts()) : $ashuwp_query->the_post(); ?>coU快乐收录网

<div class="post">   <a href="<?php the_permalink();?>"><?php the_title();?></a> </div> <?php endwhile;?> </div> <?php endif; ?> <div id="ashuwp_page"> <?php $pagination = paginate_links( array(   base =>

$links./page/%#%,coU快乐收录网

  format => /page/%#%,coU快乐收录网

  prev_text => 上一页,coU快乐收录网

  next_text => 下一页,coU快乐收录网

  total => $ashuwp_query->max_num_pages,coU快乐收录网

current => $pagenumcoU快乐收录网

) );coU快乐收录网

if ( $pagination ) {coU快乐收录网

    echo $pagination;coU快乐收录网

}coU快乐收录网

?>coU快乐收录网

</div> </div> </div><!--site-page--> <div id="footer"> <div class="container"> <p>网站底部</p> </div> </div> </body> </html>
这样,wordpress 网站多条件筛选功能就制作好了。

示例下载

下载的文件为一个极简单的主题,效果预览步骤:coU快乐收录网

1.下面提供了拥有这种功能的简单的WORDPRESS 主题,下载主题并安装,并设置好伪静态coU快乐收录网

2.添加几篇文章到自定义分类法中coU快乐收录网

3.直接访问筛选页面的url,比如:URL/sift 或者URL/sift/0_1_1_0等等。coU快乐收录网

主题下载:https://pan.baidu.com/s/1a8_XxNy7B3HUA1ji84g_dAcoU快乐收录网

coU快乐收录网

  《wordpress 网站多条件筛选功能制作(纯代码)(wordpress筛选功能)》更新于时间:2023-04-10 09:27:45;由本站小编进行发布,目前浏览的小伙伴达到,感谢你们的支持,后期快乐收录网小编会继续为大家更新更多相关的文章,希望广大网友多多关注快乐收录网工作心得栏目,如果觉得本站不错,那就给我们一个分享的支持吧!

wordpress 网站多条件筛选功能制作(纯代码)(wordpress筛选功能)特别声明

本站快乐收录网提供的wordpress 网站多条件筛选功能制作(纯代码)(wordpress筛选功能)都来源于网络,不保证文章的准确性和真实性,同时,对于该文章所造成的影响,不由快乐收录网实际控制,在2023-04-10 09:27:45收录时,该网页上的内容,都属于合规合法,如有侵权违规,可以直接联系网站管理员进行整改或删除,快乐收录网不承担任何责任。

快乐收录网:致力于优质、实用的网络站点资源收集与分享!本文地址:https://nav.klxjz.cn/CMS/WordPress/93361.html转载请注明

标签: