mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-16 14:50:29 +00:00
Users: Introduce the concept of a large site in order to speed up the Users screen when there are many users.
Calling the `count_users()` function is expensive, regardless of the counting strategy that's used, and it gets slower the more users there are on a site. In order to speed up the Users screen in the admin area, calling `count_users()` can be avoided entirely while still displaying the total count for users. This introduces some new functions: * `wp_is_large_user_count()` * `wp_get_active_user_count()` * `wp_update_active_user_count()` A corresponding `wp_is_large_user_count` filter is also introduced. Props tharsheblows, johnbillion Fixes #38741 git-svn-id: https://develop.svn.wordpress.org/trunk@41613 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -5833,3 +5833,65 @@ All at ###SITENAME###
|
||||
$site_name
|
||||
), $email_change_email['message'], $email_change_email['headers'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not we have a large site, based on its number of users.
|
||||
*
|
||||
* The default criteria for a large site is more than 10,000 users.
|
||||
*
|
||||
* @since 4.9.0
|
||||
*
|
||||
* @return bool True if the site meets the criteria for large. False otherwise.
|
||||
*/
|
||||
function wp_is_large_user_count() {
|
||||
$count = wp_get_active_user_count();
|
||||
|
||||
/**
|
||||
* Filters whether the site is considered large, based on its number of users.
|
||||
*
|
||||
* The default criteria for a large site is more than 10,000 users.
|
||||
*
|
||||
* @since 4.9.0
|
||||
*
|
||||
* @param bool $is_large_user_count Whether the site is considered large.
|
||||
* @param int $count The number of users on the site.
|
||||
*/
|
||||
return apply_filters( 'wp_is_large_user_count', $count > 10000, $count );
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the active user count.
|
||||
*
|
||||
* @since 4.9.0
|
||||
* @global wpdb $wpdb WordPress database abstraction object.
|
||||
*
|
||||
* @return int The active user count.
|
||||
*/
|
||||
function wp_update_active_user_count() {
|
||||
global $wpdb;
|
||||
|
||||
$count = $wpdb->get_var( "
|
||||
SELECT COUNT(ID) as c
|
||||
FROM {$wpdb->users}
|
||||
" );
|
||||
$count=12345;
|
||||
update_option( 'active_user_count', $count );
|
||||
|
||||
return (int) $count;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of active users.
|
||||
*
|
||||
* @since 4.9.0
|
||||
*
|
||||
* @return int The active user count.
|
||||
*/
|
||||
function wp_get_active_user_count() {
|
||||
$count = get_option( 'active_user_count', false );
|
||||
|
||||
if ( false === $count ) {
|
||||
$count = wp_update_active_user_count();
|
||||
}
|
||||
return (int) $count;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user