count_users()
は、WordPress に登録されているユーザーをロール(権限)ごとに集計し、それぞれのロールに属するユーザー数を返す関数です。
ユーザー管理画面や統計情報の表示などで、ロールごとの分布を把握する際に役立ちます。
目次
基本構文
count_users( string $strategy = 'time' );
この関数を呼び出すことで、ユーザー数をロール別にカウントした結果の配列が返されます。
引き数と戻り値
引数 | 型 | 説明 |
---|---|---|
$strategy | string | カウント方法('time' または 'memory' )'time' :DBクエリ実行、'memory' :ロード済みデータ利用(精度低) |
戻り値 | 型 | 説明 |
---|---|---|
配列 | array | total_users (全体数)、avail_roles (ロール別のユーザー数)を含む連想配列 |
使用例
タグを使った使用例
$users_count = count_users();
echo '全ユーザー数: ' . $users_count['total_users'] . '<br>';
foreach ( $users_count['avail_roles'] as $role => $count ) {
echo "{$role} : {$count} 人<br>";
}
このコードは、全ユーザー数と各ロールごとの人数を一覧表示します。
注意点
$strategy = 'memory'
を使用すると高速ですが、キャッシュされた古い情報の可能性があり、正確でないことがあります。$strategy = 'time'
は都度データベースから取得するため、正確だが負荷がやや高め。- マルチサイトでは全ネットワークユーザーではなく、現在のサイトに登録されているユーザーが対象となります。
よく一緒に使われる関数
get_users()
$users = get_users( array( 'role' => 'subscriber' ) );
指定ロールのユーザーを詳細に取得したい場合に使います。
wp_list_pluck()
$user_ids = wp_list_pluck( $users, 'ID' );
get_users()
で取得した配列から ID のみを取り出す際に使用。
user_can()
if ( user_can( $user_id, 'edit_posts' ) ) {
// 実行可能
}
各ユーザーが実行可能な操作をチェックできます。
想定されるトラブル
表示数が実際と合わない
キャッシュの影響やロールに誤ったカスタム定義があると、不一致が起きることがあります。
解決方法
$strategy = 'time'
を使用して最新の情報を取得してください。
マルチサイトで全ユーザー数が表示されない
count_users()
は現在のサイトのユーザー数しか取得しません。
解決方法
ネットワーク全体の情報が必要な場合は、カスタムクエリで wp_users テーブルを直接参照します。
Q&A
まとめ
count_users()
は、ロール別ユーザー数を取得できる便利な関数で、ユーザー管理や統計系の管理画面に最適です。
シンプルな引数と扱いやすい戻り値構造により、初心者でも活用しやすく、また戦略的に $strategy
を使い分けることでパフォーマンス調整も可能です。マルチサイトやカスタムロールの運用には注意が必要です。
コメント