wordpress的get_users是获取用户列表,我们可以获取到所有角色为author的用户,但是这种排序并没有按照最新发表文章时间对用户列表进行排序(get_users order by author last post date)。
我们可以使用以下函数来做到这一点:
function get_users_ordered_by_post_date($args="") {
Products
GG网络技术分享 2025-03-18 16:15 0
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){
}
}
}
排序有个问题就是当用户和文章越来越多的时候,数据查询的时间会越来越长,也就是可能会卡住。
Demand feedback