web-dev-qa-db-ja.com

作者リスト 'special'作者、次に 'normal'作者

現在私はすべての作家と一緒に作家リストを作成しようとしていますが、いくつかの '特別な'作家の上に。 「特別な」著者が最初に表示され、通常の著者と一緒にリストに表示されるべきではありません。

'特別な'作者は、メタ値 '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>';
    ?>
1
rwzdoorn

'特別な'作者は、メタ値 '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の順序を使用します。

膨大な数のユーザーがいる場合は、クエリページネーションを使用することをお勧めします。

3
birgire