WordPressに登録されているユーザーの情報を取得して、ユーザー名やメールアドレスなどのプロフィールをテーマ内に一覧で出力する方法をご紹介いたします。
WordPressで登録ユーザーの情報を取得して一覧で出力する方法
ユーザーの一覧を出力するには、get_users関数を使います。基本形は以下の通りです。
<?php
$args = array(
'blog_id' => $GLOBALS['blog_id'], //ブログID(マルチサイト)
'role' => '', //ユーザー権限
'meta_key' => '', //プロフィールの項目名(wp_usermetaテーブルのmeta_key)
'meta_value' => '', //プロフィール項目の値
'meta_compare' => '', //比較演算子
'meta_query' => array(), //カスタムフィールドの条件指定
'date_query' => array(), //WP_Date_Queryオブジェクトとして処理される配列
'include' => array(), //IDを含むユーザーのみを抽出
'exclude' => array(), //IDを含まないユーザーのみを抽出
'orderby' => 'login', //ソートの基準
'order' => 'ASC', //表示順
'offset' => '', //先頭から指定した数のユーザーを除外
'search' => '', //検索キーワード
'number' => '', //ユーザー数の上限
'fields' => 'all', //配列に含めるフィールド
'who' => '' //指定したユーザー権限よりも上位の権限を抽出
);
$users = get_users( $args );
foreach ( $users as $user ) {
echo '<span>' . esc_html( $user->user_email ) . '</span>';
}
?>
$argsに抽出するユーザーの条件を代入し、get_users関数で取得します。取得したユーザーの情報をループで出力しています。ループ部分で出力できる情報は、こちらの記事をご参照ください。
カスタムフィールドの値でユーザーを絞り込みたい場合は、meta_queryで条件指定します。例えば、Advanced Custom Fieldsで追加したカスタムフィールドの値でユーザーを絞り込む場合は、以下のように記述します。
<?php
$args = array(
'meta_query' => array( array(
'key' => 'カスタムフィールド名',
'value' => 'カスタムフィールドの値',
'compare' => 'LIKE',
) ),
);
$users = get_users( $args );
?>
Advanced Custom Fieldsで追加したカスタムフィールドの値は、単純に文字列だけが保存されるわけではないので、「’compare’ => ‘LIKE’」であいまい検索をしています。
全ユーザーの一覧を出力するサンプルコード
抽出するユーザーの条件を指定せず、全ユーザーの一覧を出力したい時は、以下のようにしてもOKです。
<?php
$users = get_users( array('orderby'=>ID,'order'=>ASC) ); //ユーザー情報の取得(ユーザーIDの昇順)
?>
<ul class="userlist">
<?php foreach($users as $user): $user_id = $user->ID; ?>
<li>
<a href="<?php echo esc_url(home_url( '/?author=' )).$user_id; ?>">
<div class="userlist__img">
<?php echo get_avatar( $user_id,100 ); //ユーザー画像 ?>
</div>
<div class="userlist__detail">
<h3 class="userlist__name"><?php echo $user->display_name; //ブログ上の表示名 ?></h3>
<div class="userlist__description"><?php echo wpautop($user->user_description); //プロフィール情報 ?></div>
</div>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
あとがき
色んな条件で絞り込めるようになっているので便利ですね。
ユーザーの一覧ページを作成したい時は、ぜひ参考にしていただければと思います。