最近模板兔给某个客户定制一个关于数据下载的WordPress模板,需要使用erphpdown收费下载插件,其中要实现这样一个页面:多字段筛选。
效果如下:(这里只列出3项自定义字段)
筛选界面代码如下:
<div class="filters"> <div class="filter-item"> 数据标价:<a href="<?php echo add_query_arg("price","all",selfURL())?>" class="<?php if(!isset($_GET['price']) || $_GET['price'] == 'all') echo 'on';?>">全部</a> <a href="<?php echo add_query_arg("price","free",selfURL())?>" class="<?php if($_GET['price'] == 'free') echo 'on';?>">免费</a> <a href="<?php echo add_query_arg("price","fee",selfURL())?>" class="<?php if($_GET['price'] == 'fee') echo 'on';?>">付费</a> </div> <div class="filter-item"> 数据来源:<a href="<?php echo add_query_arg("from","all",selfURL())?>" class="<?php if(!isset($_GET['from']) || $_GET['from'] == 'all') echo 'on';?>">全部</a> <a href="<?php echo add_query_arg("from","data",selfURL())?>" class="<?php if($_GET['from'] == 'data') echo 'on';?>">引力数据</a> <a href="<?php echo add_query_arg("from","organization",selfURL())?>" class="<?php if($_GET['from'] == 'organization') echo 'on';?>">机构</a> <a href="<?php echo add_query_arg("from","internet",selfURL())?>" class="<?php if($_GET['from'] == 'internet') echo 'on';?>">互联网</a> <a href="<?php echo add_query_arg("from","personal",selfURL())?>" class="<?php if($_GET['from'] == 'personal') echo 'on';?>">个人</a> </div> <div class="filter-item"> 数据大小:<a href="<?php echo add_query_arg("size","0",selfURL())?>" class="<?php if(!isset($_GET['size']) || $_GET['size'] == '0') echo 'on';?>">全部</a> <a href="<?php echo add_query_arg("size","1",selfURL())?>" class="<?php if($_GET['size'] == '1') echo 'on';?>">100M以下</a> <a href="<?php echo add_query_arg("size","2",selfURL())?>" class="<?php if($_GET['size'] == '2') echo 'on';?>">100M-500M</a> <a href="<?php echo add_query_arg("size","3",selfURL())?>" class="<?php if($_GET['size'] == '3') echo 'on';?>">500M-1G</a> <a href="<?php echo add_query_arg("size","4",selfURL())?>" class="<?php if($_GET['size'] == '4') echo 'on';?>">1G以上</a> </div> </div>
筛选功能部分代码如下:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $metaArray = array(); //自定义字段数组by mobantu if(isset($_GET['price'])){ if($_GET['price'] == 'free'){ $array_temp = array('key' => 'down_price', 'value'=>'0', 'compare'=>'='); array_push($metaArray,$array_temp); }elseif($_GET['price'] == 'fee'){ $array_temp = array('key' => 'down_price', 'value'=>'0', 'compare'=>'>'); array_push($metaArray,$array_temp); } } if(isset($_GET['from'])){ $array_temp = array('key' => 'down_from', 'value'=>$_GET['from'], 'compare'=>'='); array_push($metaArray,$array_temp); } if(isset($_GET['size'])){ if($_GET['size'] == '1'){ $array_temp = array('key' => 'down_size', 'value'=>'100', 'type' => 'numeric', 'compare'=>'<'); array_push($metaArray,$array_temp); }if($_GET['size'] == '2'){ $array_temp = array('key' => 'down_size', 'value'=>array( 100, 500 ), 'type' => 'numeric', 'compare'=>'BETWEEN'); array_push($metaArray,$array_temp); } } $args = array( 'order' => DESC, 'caller_get_posts' => 1, 'meta_query' => $metaArray, 'paged' => $paged ); query_posts($args);
看了我的代码,相信你脑洞大开,妈妈再也不用担心你的多重筛选了~~
另外,之前也给另一个客户基于Mohtml主题开发了一个评分的功能,弄了一个评分筛选小工具,小工具选项:
部分代码如下,没有上面的代码方便,不过也可以参考:
$order = "DESC"; $orderby = 'date'; $meta_key = ''; if($review_order == 'review_desc'){ $orderby = 'meta_value_num'; $meta_key = 'review_'.$show_style; }elseif($review_order == 'review_asc'){ $order = 'ASC'; $orderby = 'meta_value_num'; $meta_key = 'review_'.$show_style; }elseif($review_order == 'date_asc'){ $order = 'ASC'; }elseif($review_order == 'random'){ $orderby = 'rand'; } if($show_date == '7'){ $args = array( 'order' => $order, 'orderby' => $orderby, 'meta_key' => $meta_key, 'meta_query' => array( array('key'=>'review_type','value'=>$type, 'compare'=>'IN'), ), 'date_query' => array( array( 'after' => '1 week ago' ) ), 'showposts' => $limit, 'caller_get_posts' => 1 ); }elseif($show_date == '30'){ $args = array( 'order' => $order, 'orderby' => $orderby, 'meta_key' => $meta_key, 'meta_query' => array( array('key'=>'review_type','value'=>$type, 'compare'=>'IN'), ), 'date_query' => array( array( 'after' => '1 month ago' ) ), 'showposts' => $limit, 'caller_get_posts' => 1 ); }elseif($show_date == '183'){ $args = array( 'order' => $order, 'orderby' => $orderby, 'meta_key' => $meta_key, 'meta_query' => array( array('key'=>'review_type','value'=>$type, 'compare'=>'IN'), ), 'date_query' => array( array( 'after' => '6 month ago' ) ), 'showposts' => $limit, 'caller_get_posts' => 1 ); }elseif($show_date == '30'){ $args = array( 'order' => $order, 'orderby' => $orderby, 'meta_key' => $meta_key, 'meta_query' => array( array('key'=>'review_type','value'=>$type, 'compare'=>'IN'), ), 'date_query' => array( array( 'after' => '1 year ago' ) ), 'showposts' => $limit, 'caller_get_posts' => 1 ); }else{ $args = array( 'order' => $order, 'orderby' => $orderby, 'meta_key' => $meta_key, 'meta_query' => array( array('key'=>'review_type','value'=>$type, 'compare'=>'IN'), ), 'showposts' => $limit, 'caller_get_posts' => 1 ); } query_posts($args);
1 个评论