ユーザ情報をメタ情報で並べ替える方法

テンプレートタグ | Published 2011/01/19 at 9:50 PM

当コミュニティサイトのトップページで使っている方法ですが

http://wpbp.net/pgdesign/

投稿者一覧 (実際には登録されているユーザさんたちです。)を、最新の登録3件表示しています。

ユーザのメタ情報は、連想配列というのに入ってくるので、指定のメタ情報をキーとしてユーザ情報を入れた配列を作りなおして、整列させます。


$userlist=get_users_of_blog(); //ユーザリストの取得
$idlist= array();  // ソートするためのキー配列の準備
foreach ($userlist as $user) {
 $idlist[get_the_author_meta( 'ID', $user->ID)]=  $user;
}

krsort($idlist);      // IDで降順
// ソートした順番で$idlistから取りだす
$wi=0;
foreach ( $idlist as $user) {

//ユーザ情報が使えます。

}

このサイトでの利用方法は、最新のユーザ3件を表示しているので、3件取得したらループを脱出してます。
使っている部分のHTMLソースを表示して、動きを確認してくださいね

<?php
$userlist=get_users_of_blog(); //ユーザ情報の取得
$idlist= array();  // idをキーとした配列を準備
foreach ($userlist as $user) {
$idlist[get_the_author_meta( 'ID', $user->ID)]=  $user;
}
//
krsort($idlist);      // キーの順番(降)でソートする
// ソートした順番で$idlistから取りだす
$wi=0;
foreach ( $idlist as $user) {
if($wi>=3) break;
if (get_the_author_meta( 'user_level', $user->ID)<>10){
?>
<!--  登録ユーザ情報 -->
<p><?php echo get_avatar($user->ID,50); ?>
<img src="<?php bloginfo( 'template_url' ); ?>/img/icon.gif" alt="" border="0" /> <a href="<?php echo get_author_posts_url( $user->ID); ?>"><?php the_author_meta( 'display_name', $user->ID); ?></a>
<br />
<?php
if (get_the_author_meta( 'program', $user->ID)<>'' || get_the_author_meta( 'design', $user->ID)<>'' ){
?>
<span>(<?php the_author_meta( 'program', $user->ID); ?><?php the_author_meta( 'design', $user->ID); ?>)</span>
<br />
<?php
} ?>

<?php the_author_meta( 'user_description', $user->ID); ?><br clear="left" />
</p>

<p><img src="<?php bloginfo( 'template_url' ); ?>/img/line.gif" alt="" border="0" /></p>

<!--  登録ユーザ情報 おわり -->
<?php
$wi++;
 }} ?>