目前,我正在尝试创建一个包含所有作者的作者列表,但上面有一些“特殊”作者。“特殊”作者应首先获得结果,并且不应与普通作者一起出现在列表中。
“special”作者在usermeta中有一个名为“werksortgodmodus”的元键,其元值为“yes”。“其余”作者的“werksortgodmodus”=否。
结果应该是这样的:
【godmodus作者】、【godmodus作者】、【godmodus作者】、【普通作者】、【普通作者】、【普通作者】。
这是我找到并剥离的代码,以获得作者。我怎样才能让godmodus成为最优秀的作家?
[edit] 用原始代码替换代码[/edit]
<?php
$display_admins = false;
$order_by = \'display_name\';
$role = \'author\';
$avatar_size = 64;
if(!empty($display_admins)) {
$blogusers = get_users(\'orderby=\'.$order_by.\'&role=\'.$role);
} else {
$admins = get_users(\'role=administrator\');
$exclude = array();
foreach($admins as $ad) {
$exclude[] = $ad->ID;
}
$exclude = implode(\',\', $exclude);
$blogusers = get_users(\'exclude=\'.$exclude.\'&orderby=\'.$order_by.\'&role=\'.$role);
}
$authors = array();
foreach ($blogusers as $bloguser) {
$user = get_userdata($bloguser->ID);
if(!empty($hide_empty)) {
$numposts = count_user_posts($user->ID);
if($numposts < 1) continue;
}
$authors[] = (array) $user;
}
echo \'<ul class="contributors">\';
foreach($authors as $author) {
$display_name = $author[\'display_name\'];
$description = get_userdata($author[\'ID\'])->user_description;
$avatar = get_avatar($author[\'ID\'], $avatar_size);
$author_profile_url = get_author_posts_url($author[\'ID\']);
echo \'<li><h3>\'.$display_name.\'</h3><a href="\', $author_profile_url, \'">\', $avatar , \'</a><p>\'.$description.\'</p><p><a href="\', $author_profile_url, \'" class="contributor-link">➤ Posts by \'.$display_name.\'</a></p></li>\';
}
echo \'</ul>\';
?>
最合适的回答,由SO网友:birgire 整理而成
“special”作者在usermeta中有一个名为“werksortgodmodus”的元键,其元值为“yes”。“其余”作者的“werksortgodmodus”=否。
例如,您可以使用(PHP版本5.4+)按元数据排序:
$blogusers = get_users(
[
\'role\' => \'author\',
\'meta_key\' => \'werksortgodmodus\',
\'orderby\' => [ \'meta_value\' => \'DESC\', \'display_name\' => \'ASC\' ],
]
);
在那里,我们先按
werksortgodmodus
元值,然后通过例如。
display_name
.
我们使用DESC
订购时yes
值位于no
价值观
如果有大量用户,那么可能需要使用查询分页。