如何使用WP_User_Query按last_name、first_name对用户列表排序
WP_User_Query 按last_name、first_name多字段排序实现
从WordPress 4.2版本开始,WP_User_Query原生支持多meta字段关联排序,不需要手动拼接SQL语句,只需要在查询参数中给需要排序的meta键定义独立子句,再在orderby规则中按优先级指定排序顺序即可。
你之前单字段排序的写法可以调整为如下多字段版本:
$args = array( // 定义查询用到的meta键,为每个键设置可引用的别名 'meta_query' => array( 'relation' => 'AND', 'last_name_sort' => array( 'key' => 'last_name', 'compare' => 'EXISTS', ), 'first_name_sort' => array( 'key' => 'first_name', 'compare' => 'EXISTS', ), ), // 按别名指定排序规则,书写顺序越靠前排序优先级越高 'orderby' => array( 'last_name_sort' => 'ASC', 'first_name_sort' => 'ASC', ), ); $user_query = new \WP_User_Query( $args );
参数说明
last_name_sort、first_name_sort是自定义别名,命名没有强制要求,只要和orderby数组里的键名一一对应即可- 排序方向可按需调整,升序用
ASC,降序替换为DESC即可 - 子句中
compare => 'EXISTS'表示仅查询存在对应meta字段的用户,如果需要把没有填写姓/名的用户也纳入结果,删除对应子句的compare参数即可 - 该写法是WordPress官方支持的标准用法,不需要额外挂载过滤器修改原生查询逻辑。
内容的提问来源于stack exchange,提问作者Cyrcle
相关产品推荐
相关产品推荐

