在WordPress中,如何对文章查询结果排序?
WP_Query中提供了 order 和 orderby 参数,可以很方便的对查询出的文章排序。
order 支持 ASC 顺序 和 DESC 逆序。
orderby 即排序方式,支持的方式则可谓五花八门。
none - 不排序;
ID - 按文章ID排序;
author - 按作者排序;
title - 按文章标题排序;
name - 按文章slug排序;
type - 按文章类型排序;
date - 按文章发布日期排序;
modified - 按文章修改日期排序
parent - 按文章parent排序;
rand - 随机顺序
comment_count - 按评论数量排序
menu_order - 文章类型为page时,即页面,编辑时可看见【页面属性】里有排序,可设置数值。当文章为post时,这个数值为0。所以说,只有当文章类型是 page 时,按menu_order排序才有效;
meta_key,meta_value - 根据文章的附属属性排序。还可以使用 meta_type 设置 meta 的数据类型,如NUMERIC, BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED, TIME, UNSIGNED等,相应的应当使用meta_value_*,如meta_value_num、meta_value_datetime 等;
post_in - 需和参数 post_in 配合使用;
post_name_in - 需和参数 post_name_in 配合使用;
post_parent_in - 需和参数 post_parent_in 配合使用;
使用示例:
// 按文章标题排序
$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);
// 按文章属性 price 排序
$args = array(
'post_type' => 'product',
'orderby' => 'meta_value_num',
'meta_key' => 'price',
);
$query = new WP_Query($args);
// 按标题【顺序】,ID【逆序】排序
$args = array(
'orderby' => array('title' => 'ASC', 'ID' => 'DESC')
);
$query = new WP_Query($args);
// 文章属性值 和 标题也可以同时排序
$args = array(
'orderby' => array('meta_value_num' => 'DESC', 'title' => 'ASC'),
'meta_key' => 'age'
);
$query = new WP_Query($args);
// 和meta_query联合使用
$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);
// 多个文章属性同时排序
$q = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
'state_clause' => array(
'key' => 'state',
'value' => 'Wisconsin',
),
'city_clause' => array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
'orderby' => array(
'city_clause' => 'ASC',
'state_clause' => 'DESC',
),
));
WP_Query 的基础用法可以参考文章:WP_Query 的基础用法简介
-
WordPress函数:is_rtl 确定当前区域设置是否为从右到左(RTL)WordPress函数:is_rtl 确定当前区域设置是否为从右到左(RTL)
-
WordPress函数:is_multisite 是否开启了多站点WordPress函数:is_multisite 是否开启了多站点
-
WordPress函数:is_main_site 是否是主站点WordPress函数:is_main_site 是否是主站点
-
WordPress函数:is_child_theme 是否正在使用子主题WordPress函数:is_child_theme 是否正在使用子主题
-
WordPress函数:current_theme_supports 检查主题对给定功能的支持WordPress函数:current_theme_supports 检查主题对给定功能的支持
-
WordPress函数:is_customize_preview 是否在自定义设置程序中预览网站WordPress函数:is_customize_preview 是否在自定义设置程序中预览网站
暂无评论,抢个沙发...