MENU

count_users()

count_users() は、WordPress に登録されているユーザーをロール(権限)ごとに集計し、それぞれのロールに属するユーザー数を返す関数です。

ユーザー管理画面や統計情報の表示などで、ロールごとの分布を把握する際に役立ちます。

目次

基本構文

count_users( string $strategy = 'time' );

この関数を呼び出すことで、ユーザー数をロール別にカウントした結果の配列が返されます。

引き数と戻り値

引数説明
$strategystringカウント方法('time' または 'memory'
'time':DBクエリ実行、'memory':ロード済みデータ利用(精度低)
戻り値説明
配列arraytotal_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() で特定のロールだけ取得できますか?

直接ロールだけを取得する引数はありませんが、avail_roles をフィルターすれば可能です。

count_users() の結果をキャッシュしたい

結果を一時的に保存したい場合、set_transient() 関数でキャッシュ可能です。

count_users() はすべてのユーザーを対象にしますか?

現在のサイトに登録されているユーザーが対象です。マルチサイトではネットワーク全体には対応しません。

まとめ

count_users() は、ロール別ユーザー数を取得できる便利な関数で、ユーザー管理や統計系の管理画面に最適です。

シンプルな引数と扱いやすい戻り値構造により、初心者でも活用しやすく、また戦略的に $strategy を使い分けることでパフォーマンス調整も可能です。マルチサイトやカスタムロールの運用には注意が必要です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次