ユーザ情報をメタ情報で並べ替える方法
テンプレートタグ | wpbptipsPublished 2011/01/19 at 9:50 PM当コミュニティサイトのトップページで使っている方法ですが
投稿者一覧 (実際には登録されているユーザさんたちです。)を、最新の登録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++;
}} ?>