Web事業部_クリエイティブ
Web事業部_クリエイティブ
2010.04.12

Word Pressでユーザーの一覧情報を出力したい

まっちー

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);

}

たぶん、こっちの方が良いよね。