Функция count_users()
в WordPress возвращает общее количество пользователей на сайте и количество пользователей, сгруппированных по ролям (например, администраторы, подписчики и т.д.). Это полезный инструмент для администраторов сайтов, которые хотят получить информацию о распределении пользователей по ролям.
count_users( string $strategy = 'time', int|null $site_id = null ): array
Параметры:
- $strategy(необязательный) — Стратегия вычисления количества пользователей. Принимает два значения:
'time'
— использует меньше памяти, но больше процессорного времени. Подходит для больших сайтов (с миллионами пользователей).'memory'
— более быстрый, но использует больше памяти. Подходит для сайтов с количеством пользователей до 100 000. По умолчанию:'time'
.
- $site_id (необязательный) — ID сайта для которого нужно подсчитать пользователей (актуально для мультисайтов). По умолчанию:
null
(текущий сайт).
Возвращаемое значение:
Функция возвращает ассоциативный массив с двумя основными ключами:
total_users
— общее количество пользователей на сайте.avail_roles
— массив с количеством пользователей для каждой роли (например, администратор, подписчик и т.д.).
Пример 1: Подсчет общего количества пользователей и распределение по ролям
Простой пример, который выводит общее количество пользователей на сайте и количество пользователей по каждой роли.
$result = count_users();
echo 'Всего пользователей: ' . $result['total_users'] . "<br>";
foreach( $result['avail_roles'] as $role => $count ) {
echo "Количество {$role}: {$count} <br>";
}
Всего пользователей: 250
Количество administrator: 5
Количество subscriber: 245
Этот пример возвращает общее количество пользователей и перечисляет, сколько пользователей каждой роли зарегистрировано на сайте.
Пример 2: Вывод информации о пользователях в формате текста
Здесь мы выведем информацию о пользователях в виде текста, где упомянуты роли и количество пользователей в каждой из них.
$result = count_users();
$roles_info = [];
foreach( $result['avail_roles'] as $role => $count ) {
$roles_info[] = "{$role} ({$count})";
}
echo 'На сайте зарегистрировано ' . $result['total_users'] . ' пользователей, среди которых: ' . implode(', ', $roles_info) . '.';
Ожидаемый вывод:
На сайте зарегистрировано 250 пользователей, среди которых: administrator (5), subscriber (245).
Здесь функция implode()
используется для того, чтобы объединить список ролей и их количество в удобный для чтения текстовый формат.
Пример 3: Подсчет пользователей в мультисайтовом режиме
Если у вас включен мультисайтовый режим, можно использовать параметр $site_id
для подсчета пользователей конкретного сайта в сети.
$site_id = 2; // ID второго сайта в сети
$result = count_users('time', $site_id);
echo 'Всего пользователей на сайте с ID ' . $site_id . ': ' . $result['total_users'] . "<br>";
Ожидаемый вывод:
Всего пользователей на сайте с ID 2: 50
В этом примере происходит подсчет пользователей на сайте с ID 2, что актуально для мультисайтов.
Пример 4: Использование стратегии «memory»
Стратегия 'memory'
может быть полезной для небольших сайтов, где критически важна производительность. Она использует больше памяти, но снижает нагрузку на процессор.
$result = count_users('memory');
echo 'Всего пользователей: ' . $result['total_users'] . "<br>";
foreach( $result['avail_roles'] as $role => $count ) {
echo "Роль {$role}: {$count} пользователей<br>";
}
Ожидаемый вывод:
Всего пользователей: 120
Роль administrator: 4 пользователей
Роль subscriber: 116 пользователей
Этот пример показывает, как можно использовать стратегию 'memory'
для быстрого подсчета пользователей на небольшом сайте.
Пример 5: Получение общего количества пользователей и ролей в виде массива
Иногда нужно просто вывести результат функции count_users()
для дальнейшего анализа.
print_r( count_users() );
Ожидаемый вывод:
Array (
[total_users] => 250
[avail_roles] => Array (
[administrator] => 5
[subscriber] => 245
)
)
Этот пример выводит полную структуру данных о пользователях, возвращенную функцией count_users()
.
Важные моменты:
- Функция не возвращает роли с количеством пользователей, равным нулю. Если в системе нет пользователей с определенной ролью, эта роль просто не будет присутствовать в массиве.
- Стратегия
'time'
является более безопасной для крупных сайтов с большим количеством пользователей, так как она требует меньше памяти.
Заключение
Функция count_users()
— это эффективный способ получить информацию о пользователях сайта, включая распределение по ролям. В зависимости от потребностей вашего сайта, вы можете выбрать более подходящую стратегию вычислений, будь то по времени или по памяти.