魔扣论坛

魔扣源码论坛业务
查看: 709|回复: 5

[经验交流] WordPress 文章多重字段筛选

[复制链接]
  • TA的每日心情
    无聊
    16 小时前
  • 签到天数: 2956 天

    [LV.Master]开坛老将

    7万

    主题

    227

    回帖

    27万

    积分

    管理员

    Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

    魔扣币
    745733
    贡献
    157911
    威望
    32799

    最佳新人活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-6-15 10:21:13 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    最近魔扣科技给某个客户定制一个关于数据下载的wordpress模板,需要使用erphpdown收费下载插件,其中要实现这样一个页面:多字段筛选。

    效果如下:(这里只列出3项自定义字段)

    筛选界面代码如下:

    1. <div class="filters">
    2. <div class="filter-item">
    3. 数据标价:<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>
    4. </div>
    5. <div class="filter-item">
    6. 数据来源:<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>
    7. </div>
    8. <div class="filter-item">
    9. 数据大小:<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>
    10. </div>
    11. </div>
    复制代码
    筛选功能部分代码如下:
    1. $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    2. $metaArray = array(); //自定义字段数组by Morko

    3. if(isset($_GET['price'])){
    4. if($_GET['price'] == 'free'){
    5. $array_temp = array('key' => 'down_price', 'value'=>'0', 'compare'=>'=');
    6. array_push($metaArray,$array_temp);
    7. }elseif($_GET['price'] == 'fee'){
    8. $array_temp = array('key' => 'down_price', 'value'=>'0', 'compare'=>'>');
    9. array_push($metaArray,$array_temp);
    10. }
    11. }

    12. if(isset($_GET['from'])){
    13. $array_temp = array('key' => 'down_from', 'value'=>$_GET['from'], 'compare'=>'=');
    14. array_push($metaArray,$array_temp);
    15. }

    16. if(isset($_GET['size'])){
    17. if($_GET['size'] == '1'){
    18. $array_temp = array('key' => 'down_size', 'value'=>'100', 'type' => 'numeric', 'compare'=>'<');
    19. array_push($metaArray,$array_temp);
    20. }if($_GET['size'] == '2'){
    21. $array_temp = array('key' => 'down_size', 'value'=>array( 100, 500 ), 'type' => 'numeric', 'compare'=>'BETWEEN');
    22. array_push($metaArray,$array_temp);
    23. }
    24. }


    25. $args = array(
    26. 'order' => DESC,
    27. 'caller_get_posts' => 1,
    28. 'meta_query' => $metaArray,
    29. 'paged' => $paged
    30. );

    31. query_posts($args);
    复制代码

    看了我的代码,相信你脑洞大开,妈妈再也不用担心你的多重筛选了~~


    另外,之前也给另一个客户基于Mohtml主题开发了一个评分的功能,弄了一个评分筛选小工具,小工具选项:

    部分代码如下,没有上面的代码方便,不过也可以参考:

    1. $order = "DESC";
    2. $orderby = 'date';
    3. $meta_key = '';

    4. if($review_order == 'review_desc'){
    5. $orderby = 'meta_value_num';
    6. $meta_key = 'review_'.$show_style;

    7. }elseif($review_order == 'review_asc'){
    8. $order = 'ASC';
    9. $orderby = 'meta_value_num';
    10. $meta_key = 'review_'.$show_style;

    11. }elseif($review_order == 'date_asc'){
    12. $order = 'ASC';
    13. }elseif($review_order == 'random'){
    14. $orderby = 'rand';
    15. }

    16. if($show_date == '7'){
    17. $args = array(
    18. 'order' => $order,
    19. 'orderby' => $orderby,
    20. 'meta_key' => $meta_key,
    21. 'meta_query' => array(
    22. array('key'=>'review_type','value'=>$type, 'compare'=>'IN'),
    23. ),
    24. 'date_query' => array(
    25. array(
    26. 'after' => '1 week ago'
    27. )
    28. ),
    29. 'showposts' => $limit,
    30. 'caller_get_posts' => 1
    31. );
    32. }elseif($show_date == '30'){
    33. $args = array(
    34. 'order' => $order,
    35. 'orderby' => $orderby,
    36. 'meta_key' => $meta_key,
    37. 'meta_query' => array(
    38. array('key'=>'review_type','value'=>$type, 'compare'=>'IN'),
    39. ),
    40. 'date_query' => array(
    41. array(
    42. 'after' => '1 month ago'
    43. )
    44. ),
    45. 'showposts' => $limit,
    46. 'caller_get_posts' => 1
    47. );
    48. }elseif($show_date == '183'){
    49. $args = array(
    50. 'order' => $order,
    51. 'orderby' => $orderby,
    52. 'meta_key' => $meta_key,
    53. 'meta_query' => array(
    54. array('key'=>'review_type','value'=>$type, 'compare'=>'IN'),
    55. ),
    56. 'date_query' => array(
    57. array(
    58. 'after' => '6 month ago'
    59. )
    60. ),
    61. 'showposts' => $limit,
    62. 'caller_get_posts' => 1
    63. );
    64. }elseif($show_date == '30'){
    65. $args = array(
    66. 'order' => $order,
    67. 'orderby' => $orderby,
    68. 'meta_key' => $meta_key,
    69. 'meta_query' => array(
    70. array('key'=>'review_type','value'=>$type, 'compare'=>'IN'),
    71. ),
    72. 'date_query' => array(
    73. array(
    74. 'after' => '1 year ago'
    75. )
    76. ),
    77. 'showposts' => $limit,
    78. 'caller_get_posts' => 1
    79. );
    80. }else{
    81. $args = array(
    82. 'order' => $order,
    83. 'orderby' => $orderby,
    84. 'meta_key' => $meta_key,
    85. 'meta_query' => array(
    86. array('key'=>'review_type','value'=>$type, 'compare'=>'IN'),
    87. ),
    88. 'showposts' => $limit,
    89. 'caller_get_posts' => 1
    90. );
    91. }
    92. query_posts($args);
    复制代码


    会员购买:>> 点击购买 << | 魔扣币购买:>> 点击购买 <<
    承接业务:服务器代维丨网站托管丨SEO
    联系客服:微信:morko-net | QQ:1367681973

    该用户从未签到

    1

    主题

    273

    回帖

    547

    积分

    高级魔扣

    Rank: 4

    魔扣币
    273
    贡献
    273
    威望
    0
    发表于 2017-6-15 10:35:57 | 显示全部楼层
    太给力了,永远支持魔扣源码论坛!

    该用户从未签到

    2

    主题

    250

    回帖

    502

    积分

    高级魔扣

    Rank: 4

    魔扣币
    250
    贡献
    250
    威望
    0
    发表于 2017-10-28 21:47:00 | 显示全部楼层
    确实不错,顶先

    该用户从未签到

    2

    主题

    221

    回帖

    445

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    222
    贡献
    222
    威望
    0
    发表于 2017-12-19 08:36:34 来自手机 | 显示全部楼层
    前排支持下

    该用户从未签到

    3

    主题

    249

    回帖

    501

    积分

    高级魔扣

    Rank: 4

    魔扣币
    249
    贡献
    249
    威望
    0
    发表于 2018-7-7 17:51:10 | 显示全部楼层
    小白一个 顶一下

    该用户从未签到

    1

    主题

    256

    回帖

    513

    积分

    高级魔扣

    Rank: 4

    魔扣币
    256
    贡献
    256
    威望
    0
    发表于 2018-12-8 20:47:33 | 显示全部楼层
    没有声音但有祝福,没有鲜花但有真情。静静打开你的空间,慢慢上传我的祝福。让快乐和你度过每一秒,愿平安同你走过每一分!因为牵挂,我来问候;因为相知,我来祝福;因为珍惜,我来看朋友;因为缘分,魔扣源码论坛让我懂得了友情的珍贵。祝朋友永远开心快乐!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表