стесняюсь спросить — а какое у вас количество пользователей?
подсчет большого количества пользователей слишком нагружает систему. Подскажите, его можно отключить ?
Да, с помощью фильтра pre_count_users
. Например, так:
function disable_role_counts() {
global $wpdb, $wp_roles;
$total_users = $wpdb->get_var(
"
SELECT COUNT(ID)
FROM {$wpdb->users}
"
);
$result = array(
'total_users' => $total_users,
'avail_roles' => array_fill_keys( array_keys( $wp_roles->get_names() ), 0 ),
);
return $result;
}
add_filter( 'pre_count_users', 'disable_role_counts' );
Не сработало, еще варианты есть?
А какая версия WP используется?
До версии 6.0 у меня на тестовой установке с 200 000 пользователей экран «Пользователи» открывался около 30 секунд, а с этим кодом — практически мгновенно.
С версии 6.0 появилась функция wp_is_large_user_count(), и если на сайте больше 10 000 пользователей, то функция count_users()
на этом экране вообще не должна вызываться.
Версия 5.1, пока нет возможности обновить, нужно некоторые старые плагины переделать сперва.
-
Ответ изменён 1 год, 7 месяцев назад пользователем rootey.
еще варианты есть?
Как вариант можете рассмотреть кэширование данного запроса.
Например как-то так:
function get_cached_users_count() {
$count = wp_cache_get( 'users_count', 'users' );
if ( $count === false ) {
$count = count_users();
wp_cache_set( 'users_count', $count, 'users', 60*60*24 ); // Кэшируем результат на 24 часа
}
return $count;
}