WordPressでユーザーの一覧を出力しようと思ったら、wp_list_authors()関数を使えば事足りる。
でもこれはある程度出力の形式が限られてしまうし、もっと変則的な一覧リストを作りたいなんてときに、php形式でユーザーの一覧データを取得できれば望ましいのだが、どうやら、そう都合よくデータを持ってこれる関数というのは、ないらしい。
カテゴリならget_categories()があるし、タグもget_tags()があるのに、それに対応するget_authors()みたいな関数はないようだ。
ではどうするか。方法はいろいろあると思うけど、とりあえずこんな一例を考えてみる。
$i = 1;
while(1) {
$data = get_userdata($i);
if(empty($data)) {
break;
} else {
$userdata[] = $data;
$i++;
}
}
これならとりあえず、ユーザーのIDが存在する限りはデータを持ってこれる。ユーザーが3人しかいなかったら、IDが4のユーザーは存在しないはずなので、$dataには空の値が入る。空の値が入った時点で処理を終了しましょうと、まあそんな感じです。
ただしこのやり方だと、IDが4のユーザーはいないのにIDが5のユーザーが存在した場合、IDが5のユーザーの情報は持ってこれない。新規にユーザーを登録した後に前のユーザーを削除したりなんかすれば、たぶんこういう状況ができる。
……ってことに、これを書いているまさに今、気がついた。このメソッドダメじゃんねww
DBから直でデータを持ってくるようにしないとダメだろうか…?
$wpdb->query("SELECT * FROM wp_users");
foreach($wpdb->last_result as $key => $result) {
$data[] = get_userdata($result->ID);
}
たぶん、こっちの方が良いよね。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。