WordPress 的 get_users 是获取用户列表的,我们可以获取所有角色是 author 的用户,但是这个排序却没有基于最新发布文章时间(get_users order by author last post date)来排序用户列表的。
我们可以通过以下函数来实现:
- function get_users_ordered_by_post_date($args = ”) {
- // Prepare arguments
- if (is_string($args) && ” !== $args)
- parse_str($args, $args);
- $asc = (isset($args[‘order’]) && ‘ASC’ === strtoupper($args[‘order’]));
- unset($args[‘orderby’]);
- unset($args[‘order’]);
- // Get ALL users
- $users = get_users($args);
- $post_dates = array();
- if ($users) {
- // For EACH user …
- foreach ($users as $user) {
- $ID = $user->ID;
- // … get ALL posts (per default sorted by post_date), …
- $posts = get_posts(‘author=’.$ID);
- $post_dates[$ID] = ”;
- // … then use only the first (= newest) post
- if ($posts) $post_dates[$ID] = $posts[0]->post_date;
- }
- }
- // Sort dates (according to order), …
- if (! $asc)
- arsort($post_dates);
- // … then set up user array
- $users = array();
- foreach ($post_dates as $key => $value) {
- // $user = get_userdata($key);
- // $users[] = $user->ID;
- $users[] = get_userdata($key);
- }
- return $users;
- }
将 get_users 替换为 get_users_ordered_by_post_date 即可,参数还是传入一个$args。
有一点需要注意的时,如果要分页获取作者列表,需对数组进行分页。
- $authors = get_users_ordered_by_post_date(
- array(
- ‘role__in’ => array( ‘author’ )
- )
- );
- if($authors){
- $perpage = 16;
- $pagess = ceil(count($authors) / $perpage);
- if (!get_query_var(‘paged’)) {
- $paged = 1;
- }else{
- $paged = $wpdb->escape(get_query_var(‘paged’));
- }
- $offset = $perpage*($paged–1);
- $authors2 = array_slice($authors,($paged–1)*$perpage,$perpage);
- if($authors2){
- foreach($authors2 as $author){
- }
- }
- }
有种排序有个问题就是当用户以及文章越来越多时,数据查询的时间会越来越长,也就是可能会卡。
文章标题:WordPress如何基于最后发布文章的时间来排序作者用户列表
文章链接:https://www.wuyanshuo.cn/1304.html
更新时间:2022年09月12日
本站资源均为两层压缩,第一层7z(后缀若为wys,请自行修改为7z)有解压密码;第二层zip或cbz,无解压密码,可直接使用漫画类软件程序查看;详情可参考解压教程。
本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:service@wuyanshuo.cn我们将第一时间处理! 资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。 所有资源仅限于参考和学习,版权归原作者所有,更多请阅读无言说网络服务协议。