WordPress教程

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.  
  9. // Get ALL users
  10. $users = get_users($args);
  11. $post_dates = array();
  12. if ($users) {
  13. // For EACH user ...
  14. foreach ($users as $user) {
  15. $ID = $user->ID;
  16.  
  17. // ... get ALL posts (per default sorted by post_date), ...
  18. $posts = get_posts('author='.$ID);
  19. $post_dates[$ID] = '';
  20.  
  21. // ... then use only the first (= newest) post
  22. if ($posts) $post_dates[$ID] = $posts[0]->post_date;
  23. }
  24. }
  25.  
  26. // Sort dates (according to order), ...
  27. if (! $asc)
  28. arsort($post_dates);
  29.  
  30. // ... then set up user array
  31. $users = array();
  32. foreach ($post_dates as $key => $value) {
  33. // $user = get_userdata($key);
  34. // $users[] = $user->ID;
  35. $users[] = get_userdata($key);
  36. }
  37. return $users;
  38. }

将 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.  
  21. }
  22.  
  23. }

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

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

已有 203 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!