在 WordPress 中,使用 WP_Query
进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query
进行 WordPress 文章查询。
我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。
第六讲关于排序相关的参数,排序相关的参数就是 order 和 orderby 两个参数,但是值比较多比较多:
首先是 order
参数,数据类型为:(string | array),用于指定 “orderby” 参数的升序或降序,默认为”DESC
”,即为降序,如果是数组的话,可用于多个 order/orderby
集:
ASC
– 升序,从最低值到最高值 (1, 2, 3; a, b, c)DESC
– 降序,从最高值到最低值 (3, 2, 1; c, b, a)
然后是 orderby
参数,数据类型为:(string | array),按参数对检索到的文章进行排序。默认为:date
(post_date
)。可以传递一个或多个选项:
none
– 无顺序ID
– 按文章 ID 排序,注意 ID 是大写的。author
– 按文章作者排序。title
– 按文章标题排序name
– 按文章名称排序,即 URL别名。type
– 按文章类型排序。date
– 按文章发布日期排序。modified
– 按文章修改日期排序。parent
– 按文章或页面的父 ID 排序rand
– 随机排序comment_count
– 按文章评论数排序relevance
– 按相关性排序,根据以下顺序按搜索词排序:首先是否匹配整个句子,其次如果所有搜索词都在标题内,第三是否有任何搜索词出现在标题中,第四是否完整的句子出现在内容中。menu_order
– 按照页面的顺序排序。常用于页面(排序字段在页面编辑页面的「页面属性」框中),也可用于具有不同menu_order
值的任何文章类型(默认值都是 0)。meta_value
– 按照自定义字段排序,请先确保在查询中已经设置了meta_key
,额外要注意,是按字母顺序排列的,这对于字符串来说没有问题,但对于数字可以结果不是你预期的,(例如结果是 1、3、34、4、56、6 ,而不是 1、3、4、6、 34, 56)。如果要按照数字排序,请使用meta_value_num
代替数值。如果要将自定义字段的值转换为特定类型之后再排序,可以通过指定meta_type
来实现,可以这些类型:NUMERIC
,BINARY
,CHAR
,DATE
,DATETIME
,DECIMAL
,SIGNED
,TIME
,UNSIGNED
。也可以使用meta_value_*
来指定,例如转换为DATETIME
类型时,也可以使用meta_value_datetime
来作为orderby
参数。meta_value_num
– 按照数字类型的自定义字段排序。post__in
– 按照post__in
参数中给出的文章 ID 顺序进行排序,注意使用post__in
,order
参数的值无效。post_name__in
– 按照
参数中给出的文章名称(URL别名)顺序进行排序,同样这时候post_name__in
order
参数的值无效。post_parent__in
– 按照
参数中给出的文章父 ID 顺序进行排序,同样这时候post_parent__in
order
参数的值无效。
按照文章标题降序:
$args = array(
'orderby' => 'title',
'order' => 'DESC',
);
$query = new WP_Query( $args );
先按照「页面顺序」排序,然后再按文章标题,降序:
$args = array(
'orderby' => 'menu_order title',
'order' => 'DESC',
);
$query = new WP_Query( $args );
随机显示一遍文章:
$args = array(
'orderby' => 'rand',
'posts_per_page' => '1',
);
$query = new WP_Query( $args );
按照评论数排序(最受欢迎):
$args = array(
'orderby' => 'comment_count'
);
$query = new WP_Query( $args );
获取按照价格自定义字段排序的商品:
$args = array(
'post_type' => 'product',
'orderby' => 'meta_value_num',
'meta_key' => 'price',
);
$query = new WP_Query( $args );
按照标题降序,页面顺序升序:
$args = array(
'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' )
);
$query = new WP_Query( $args );
按照数字类型自定义字段降序,标题升序:
$args = array(
'orderby' => array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ),
'meta_key' => 'age'
);
$query = new WP_Query( $args );
获取 my_custom_post_type
的文章,按照数字自定义字段 age
排序,并通过 meta_query
过滤数据只显示 age 为:3-4 的数据
$args = array(
'post_type' => 'my_custom_post_type',
'meta_key' => 'age',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'age',
'value' => array( 3, 4 ),
'compare' => 'IN',
),
),
);
$query = new WP_Query( $args );
如果要通过两个自定义字段来排序,比如先通过 city 升序 然后 province 降序,这时候就需要通过「命名的 meta 查询」(named meta queries
)来组合并链接 meta_query
到 orderby
数组:
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'province_clause' => array(
'key' => 'province',
'value' => '广东省',
),
'city_clause' => array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
'orderby' => array(
'city_clause' => 'ASC',
'province_clause' => 'DESC',
),
) );
这一系列文章的更加偏向代码层级,阅读性不强,但是如果你也是经常进行 WordPress 二次开发的话,这篇文章非常方便快速查询,所以建议收藏本文。&
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 11210980@qq.com 进行处理!
本文地址:https://www.zycang.com/76510.html
文章转载或复制请以超链接形式并注明来源出处。 本文最后更新于:2022-09-04 19:12:34
声明:某些文章或资源具有时效性,若有 错误 或 所需下载资源 已失效,请联系客服QQ:11210980
请登录后发表评论
注册