現在私はすべての作家と一緒に作家リストを作成しようとしていますが、いくつかの '特別な'作家の上に。 「特別な」著者が最初に表示され、通常の著者と一緒にリストに表示されるべきではありません。
'特別な'作者は、メタ値 'yes'を持つ 'werksortgodmodus'と呼ばれるメタキーをusermetaに持っています。作者の残りは 'werksortgodmodus' = noを持っています。
結果は次のようになります。
[godmodusを持つ著者]、[godmodusを持つ著者]、[godmodusを持つ著者]、[通常の著者]、[通常の著者]、[通常の著者]。
これは私が見つけて作者を見つけるために取り除いたコードです。どうすればgodmodusを上にして作者を獲得できますか?
[編集]を元のコードに置き換えました[/編集]
<?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>';
?>
'特別な'作者は、メタ値 'yes'を持つ 'werksortgodmodus'と呼ばれるメタキーをusermetaに持っています。作者の残りは 'werksortgodmodus' = noを持っています。
あなたは例えば(PHPバージョン5.4 +)を使用して、メタ値で並べ替えます。
$blogusers = get_users(
[
'role' => 'author',
'meta_key' => 'werksortgodmodus',
'orderby' => [ 'meta_value' => 'DESC', 'display_name' => 'ASC' ],
]
);
ここで、最初にwerksortgodmodus
メタ値で、次に次にdisplay_name
。
DESC
の値がyes
の値の前にくるように、no
の順序を使用します。
膨大な数のユーザーがいる場合は、クエリページネーションを使用することをお勧めします。