WordPress按照文章自定义字段进行排序的内部调用方法

2016-10-09 22:48 栏目:技术开发 查看(5665)

湖南幸运赛车爱彩人彩票网 www.schu9.cn WordPress虽然是一款博客程序,但实际上有很多企业网站依然使用它,其中包括很多著名的大型公司官网都是基于WordPress创建的。而事实上,除了博客和企业官网,它还可以通过二次开发,开发成购物商城、资讯门户等逻辑更为复杂的web应用。当然有人会说在不经过深度优化前提下,WordPress的性能是一个问题,但我想说的是,对于绝大多数企业官网也好,还是其他应用也好,它的性能问题不是问题,因为你的运营如果能遇到真正的性能问题,说明你的运营已经非常成功了(当然指的是中小网站)。

因为二次开发,因此我们时长会碰到各种各样的需求,比如说一个个人博客,他需要对他的博客文章按照浏览数进行排序;再或者,一个基于WordPress开发的购物网站,需要对商品按照评分来排序(商品采用posts表改造,只是post_type的值另外指定的,这个功能需要另外开发,这里先不说)。

简单地来说,这样的需求都可以总结为:按照文章自定义字段进行排序。

诚然,这是再简单不过的东西了,无非就是select的了,一句sql就能搞定,而且WordPress有内置的数据库操作方法(如$wpdb对象)。但如果熟悉这个程序的都知道,实际上它的数据结构的范式是比较低的,三大主要内容post、comment以及users实际上一共有6张表,各自分别有一个主表和一个存储meta信息的数据表。

实际上这个问题,在一般情况下(是指没有特殊应用需求场景下),根本不需要自己自己重新用$wpdb对象来对数据库进行操作。而使用非常强大也非常常用的query_posts()方法即可,这个方法的说明在国内网站上比比皆是,但我觉得大部分都没讲透彻,比如现在说的这个需求很多文章就没讲。

在国内很多文章中,也写到了query_posts()参数中有orderby和order,但其中orderby主要还是介绍按照指定的某几个字段(主要是posts主表中的字段)进行排序的。而关于自定义字段的排序很多都没有讲到,实际上是可以按照自定义字段排序的。

下面来举一个例子,按照文章阅读数调取阅读最多的10篇文章,当然阅读数WordPress默认情况下也是没有的,需要另外开发相应功能,开发过程网上一大把,自己写也很简单。实际上query_posts()的orderby的值是支持自定义字段的,如果给上meta_value_num即可,当然同时要定义meta_key这个参数,比如在开发阅读数的时候meta_key的值是views,那么以上需求的核心代码就是如下了:

$args=array(
     'meta_key' => 'views',
     'orderby' => 'meta_value_num',
     'posts_per_page'=>10,
     'order' => 'DESC'
);
query_posts($args);  while (have_posts()) : the_post();
//输出代码段,如带上HTML代码
endwhile;wp_reset_query();

当然最好的理解就是直接看官方文档,文档地址为:

https://developer.wordpress.org/reference/functions/query_posts/。

最后还有更好准确的就是去阅读源代码吧,源码位于wp-includes/query.php中。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:WordPress按照文章自定义字段进行排序的内部调用方法 - 微构网络
分享:
  • 打造“互联网+”,共享经济改变百姓生活 2019-04-22
  • 破财免灾!C罗愿向西班牙税务部门缴纳1880万欧元 2019-04-19
  • 中国品牌SUV新标杆 人民网试驾WEY VV7VV5 2019-04-19
  • 杨爱国:借助小博会促进尚志社会经济加快发展 2019-04-15
  • 泪目!川农院士逝世5年,夫人每日都去看他的雕像…思念如马,不停蹄! 2019-04-15
  • 海信世界杯首秀出奇招 竟打出俄文广告 2019-03-25
  • 财政部:对原产于美国的500亿美元进口商品加征关税 2019-03-11
  • 我和《人民日报》(我与人民日报·纪念人民日报创刊70周年) 2019-03-11
  • 杭州再增100个海绵城市项目 2018-11-08
  • 新华网申领新闻记者证资格审核公示 2018-11-08
  • 408| 116| 557| 624| 324| 499| 968| 699| 469| 206|