• a***n 登录了本站
  • a***n 下载了资源 WP Reset PRO Wordpress Plugin
  • a***n 下载了资源 Content Views Pro Wordpress Plugin - 最佳过滤器和网格插件
  • a***n 登录了本站
  • a***n 登录了本站
  • a***n 登录了本站
  • a***n 登录了本站
  • a***n 登录了本站
  • a***n 下载了资源 The Events Calendar Pro - 活动日历专业版插件
  • a***n 登录了本站
所有分类
  • 所有分类
  • WP主题集
  • WP插件集

wordpress多重筛选功能。例如一些房产网站上,就会经常使用多条件筛选功能,方便用户进行筛选房源。

1.创建自定义分类,增加多个筛选条件。复制下面的代码,你可以直接复制粘贴到functions.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
)
);
}

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

//获取筛选页面的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:
*ashuwp.com/sift   ashuwp.com/sift/0_0_0_0/    ashuwp.com/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');

 

5.将下面代码存放在步骤三新建的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' />
</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',
  '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';
}
?>
<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
//代码来源:柒WP资源集https://www.7wp.net/ 将获取到的参数组合为query_posts的参数
$tax_query = array(
    'relation'=> '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 );
?>
<div class="query_count">共找到<?php echo $ashuwp_query->found_posts;?>个符合条件的内容</div>
</div>
<?php
if($ashuwp_query->have_posts()) : ?>
<div id="post_list">
<?php while($ashuwp_query->have_posts()) : $ashuwp_query->the_post(); ?>
<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/%#%',
  'format' => '/page/%#%',
  'prev_text' => '上一页',
  'next_text' => '下一页',
  'total' => $ashuwp_query->max_num_pages,
  'current' => $pagenum
) );
if ( $pagination ) {
    echo $pagination;
}
?>
</div>
</div>
</div><!--site-page-->
<div id="footer">
<div class="container">
<p>网站底部</p>
</div>
</div>
</body>
</html>

这样,wordpress 网站多条件筛选功能就制作好了。

常见问题
是100% 正品 - 包含所有高级功能嘛?
我们从原开发者那里购买和下载,以提供最真实和相关的版本。注意:我们与开发人员没有直接隶属关系或关联,我们感谢作者的努力和原创作品。名称、表述和商标的使用应尽可能真实、准确地识别商品。
是否安全可靠的嘛?
每个文件上传前由诺顿和迈克菲扫描,以确保安全,100% 不含病毒/恶意软件/恶意脚本等。立即运行您自己的在线安全检查(产品图像下的按钮)。
是不限制网站数量和域名数量嘛?
根据 WordPress 的 GPL 许可政策,您可以在任意数量的网站上使用
获得产品的更新版本需要多长时间?
您可以请求更新任何购买的产品。我们保证在收到您的请求后48小时内更新。
购买后能退款嘛?
所有销售均为最终销售。除虚拟产品完全无法使用的情况外,不予退款。 如虚拟产品无法使用,我们需要时间来尝试修复它。不能修复则退款。
原文链接:https://www.7wp.net/95.html,转载请注明出处。
0

评论0

没有账号?注册  忘记密码?

社交账号快速登录