WordPress如何基于最后发布文章的时间来排序作者用户列表

WordPress 的 get_users 是获取用户列表的,我们可以获取所有角色是 author 的用户,但是这个排序却没有基于最新发布文章时间(get_users order by author last post date)来排序用户列表的。

我们可以通过以下函数来实现:

  1. function get_users_ordered_by_post_date($args = '') {
  2. // Prepare arguments
  3. if (is_string($args) && '' !== $args)
  4. parse_str($args, $args);
  5. $asc = (isset($args['order']) && 'ASC' === strtoupper($args['order']));
  6. unset($args['orderby']);
  7. unset($args['order']);
  8. // Get ALL users
  9. $users = get_users($args);
  10. $post_dates = array();
  11. if ($users) {
  12. // For EACH user ...
  13. foreach ($users as $user) {
  14. $ID = $user->ID;
  15. // ... get ALL posts (per default sorted by post_date), ...
  16. $posts = get_posts('author='.$ID);
  17. $post_dates[$ID] = '';
  18. // ... then use only the first (= newest) post
  19. if ($posts) $post_dates[$ID] = $posts[0]->post_date;
  20. }
  21. }
  22. // Sort dates (according to order), ...
  23. if (! $asc)
  24. arsort($post_dates);
  25. // ... then set up user array
  26. $users = array();
  27. foreach ($post_dates as $key => $value) {
  28. // $user = get_userdata($key);
  29. // $users[] = $user->ID;
  30. $users[] = get_userdata($key);
  31. }
  32. return $users;
  33. }

将 get_users 替换为 get_users_ordered_by_post_date 即可,参数还是传入一个$args。

有一点需要注意的时,如果要分页获取作者列表,需对数组进行分页。

  1. $authors = get_users_ordered_by_post_date(
  2. array(
  3. 'role__in' => array( 'author' )
  4. )
  5. );
  6. if($authors){
  7. $perpage = 16;
  8. $pagess = ceil(count($authors) / $perpage);
  9. if (!get_query_var('paged')) {
  10. $paged = 1;
  11. }else{
  12. $paged = $wpdb->escape(get_query_var('paged'));
  13. }
  14. $offset = $perpage*($paged-1);
  15. $authors2 = array_slice($authors,($paged-1)*$perpage,$perpage);
  16. if($authors2){
  17. foreach($authors2 as $author){
  18. }
  19. }
  20. }

有种排序有个问题就是当用户以及文章越来越多时,数据查询的时间会越来越长,也就是可能会卡。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress网站实现点击加载下一页文章列表

2022-9-12 17:02:10

WordPress教程

WordPress程序远程数据请求函数:wp_remote_post、wp_remote_get

2022-9-12 22:58:54

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索