配列 (id のみ) に含まれるユーザーのリストを取得しています。この配列は、ユーザー間の接続を表します。X 人のユーザーを表示し、残りを非表示にするという考え方なので、アバターが設定されているユーザーが優先されます。
これは私が持っているもので、正しく機能していません:
// Get all connection id's with avatars
$members_with_photos = get_users(array('meta_key' => 'profile_avatar', 'include' => $connections));
// Shuffle them
shuffle($members_with_photos);
// Add the the all_members list
foreach($members_with_photos as $member_with_photo){
$all_members[] = $member_with_photo->ID;
}
// Get all connection id's without avatars
$members_without_photos = get_users(array('exclude' => $all_members, 'include' => $connections));
// Shuffle them
shuffle($members_without_photos);
// Also add them to the list
foreach($members_without_photos as $member_without_photos){
$all_members[] = $member_without_photos->ID;
}
問題は、$members_without_photos が $connections 配列のすべてのユーザーで埋められることです。つまり、包含は除外よりも優先されます。
get_users() は接続からユーザーを探す必要がありますが、アバターを持たないユーザーが $all_members 配列の最後に表示されるように、(アバターを使用して) 既に見つかったユーザーを除外する必要があります。
私が今それを修正する方法は、後で $all_members 配列で array_unique() を使用することですが、それはもっと汚い修正だと思います。誰かがここで私を正しい方向に向けることができますか?