根据你的评论,我发现有点难以理解,但是如果你想添加<div>
围绕对方然后改变你的第二个foreach
对的声明;
foreach ($uc as $key => $value) {
$user = get_userdata($key);
$post_count = get_usernumposts($user->ID);
if ($post_count) {
$author_posts_url = get_author_posts_url($key);
echo \'<div class="class-name-here">\';
echo \'<li><a href="\' . $author_posts_url . \'">\' . $user->user_firstname . \' \' . $user->user_lastname . \'</a> (\' . $post_count . \') </li>\';
echo \'</div>\';
}
}
这是基于你想保持
<li>
元素,如果不是,只需将其替换为
<div>
$args=array(
\'author\' => $user->ID,
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 1,
\'caller_get_posts\'=> 1,
\'orderby\' => \'author\' //add the orderby parameter and sort by author
);
作为我
mentioned in my comment attached to your question 在上面,您可以尝试添加
orderby
参数,然后指定
author
作为其值,该值应通过ID排序,或者如果不起作用,则替换
author
具有
$user->ID
在原始代码段上运行一些测试后,删除不推荐使用的函数并添加orderby=date
参数设置为初始值foreach
语句(尽管有无都不起作用)我仍然能够检索作者列表,显示他们的最后一篇文章,然后对最近日期返回的所有结果排序。所以如果,
用户A发布于2012年10月12日,用户B发布于2012年10月15日,用户C发布于2012年10月11日,返回的结果顺序为,
用户B用户A用户C用户
$uc=array();
$blogusers = get_users();
if ($blogusers) {
foreach ($blogusers as $bloguser) {
$userpost = get_posts(\'showposts=1&author=\'.$bloguser->ID.\'&orderby=date\');
$uc[$bloguser->ID] = \'\';
if ($userpost) {
$uc[$bloguser->ID]=$userpost[0]->post_date;
}
}
arsort($uc);
foreach ($uc as $key => $value) {
$user = get_userdata($key);
$post_count = count_user_posts($user->ID);
if ($post_count) {
$author_posts_url = get_author_posts_url($key);
echo \'<li><a href="\' . $author_posts_url . \'">\'.$user->user_firstname . \' \' $user->user_lastname . \'</a> (\' . $post_count . \') </li>\'
}
}
}
虽然上面的代码片段可以更有效地重写,
it does work for me 和
so it should for you 与你想要实现的目标相关。