count_users( string $strategy = 'time' )
Count number of users who have each of the user roles.
描述
Assumes there are neither duplicated nor orphaned capabilities meta_values. Assumes role names are unique phrases. Same assumption made by WP_User_Query::prepare_query() Using $strategy = ‘time’ this is CPU-intensive and should handle around 10^7 users. Using $strategy = ‘memory’ this is memory-intensive and should handle around 10^5 users, but see WP Bug
参数
- $strategy
-
(string)
(Optional)
‘time’ or ‘memory’Default value: ‘time’
返回值
(array) Includes a grand total and an array of counts indexed by role strings.
源代码
File: wp-includes/user.php
function count_users($strategy = 'time') {
global $wpdb;
// Initialize
$id = get_current_blog_id();
$blog_prefix = $wpdb->get_blog_prefix($id);
$result = array();
if ( 'time' == $strategy ) {
$avail_roles = wp_roles()->get_names();
// Build a CPU-intensive query that will return concise information.
$select_count = array();
foreach ( $avail_roles as $this_role => $name ) {
$select_count[] = $wpdb->prepare( "COUNT(NULLIF(`meta_value` LIKE %s, false))", '%' . $wpdb->esc_like( '"' . $this_role . '"' ) . '%');
}
$select_count[] = "COUNT(NULLIF(`meta_value` = 'a:0:{}', false))";
$select_count = implode(', ', $select_count);
// Add the meta_value index to the selection list, then run the query.
$row = $wpdb->get_row( "
SELECT {$select_count}, COUNT(*)
FROM {$wpdb->usermeta}
INNER JOIN {$wpdb->users} ON user_id = ID
WHERE meta_key = '{$blog_prefix}capabilities'
", ARRAY_N );
// Run the previous loop again to associate results with role names.
$col = 0;
$role_counts = array();
foreach ( $avail_roles as $this_role => $name ) {
$count = (int) $row[$col++];
if ($count > 0) {
$role_counts[$this_role] = $count;
}
}
$role_counts['none'] = (int) $row[$col++];
// Get the meta_value index from the end of the result set.
$total_users = (int) $row[$col];
$result['total_users'] = $total_users;
$result['avail_roles'] =& $role_counts;
} else {
$avail_roles = array(
'none' => 0,
);
$users_of_blog = $wpdb->get_col( "
SELECT meta_value
FROM {$wpdb->usermeta}
INNER JOIN {$wpdb->users} ON user_id = ID
WHERE meta_key = '{$blog_prefix}capabilities'
" );
foreach ( $users_of_blog as $caps_meta ) {
$b_roles = maybe_unserialize($caps_meta);
if ( ! is_array( $b_roles ) )
continue;
if ( empty( $b_roles ) ) {
$avail_roles['none']++;
}
foreach ( $b_roles as $b_role => $val ) {
if ( isset($avail_roles[$b_role]) ) {
$avail_roles[$b_role]++;
} else {
$avail_roles[$b_role] = 1;
}
}
}
$result['total_users'] = count( $users_of_blog );
$result['avail_roles'] =& $avail_roles;
}
if ( is_multisite() ) {
$result['avail_roles']['none'] = 0;
}
return $result;
}
更新日志
Version | 描述 |
---|---|
4.4.0 | The number of users with no role is now included in the none element. |
3.0.0 | Introduced. |
相关函数
Uses
-
wp-includes/capabilities.php:
wp_roles() -
wp-includes/wp-db.php:
wpdb::esc_like() -
wp-includes/class-wp-roles.php:
WP_Roles::get_names() -
wp-includes/load.php:
get_current_blog_id() -
wp-includes/load.php:
is_multisite() -
wp-includes/functions.php:
maybe_unserialize() -
wp-includes/wp-db.php:
wpdb::get_row() -
wp-includes/wp-db.php:
wpdb::get_col() -
wp-includes/wp-db.php:
wpdb::prepare() -
wp-includes/wp-db.php:
wpdb::get_blog_prefix()
Show 5 more uses
Hide more uses
Used By
-
wp-admin/includes/class-wp-users-list-table.php:
WP_Users_List_Table::get_views() -
wp-includes/update.php:
wp_version_check()
User Contributed Notes
-
Skip to note content
You must log in to vote on the helpfulness of this noteVote results for this note: 0You must log in to vote on the helpfulness of this note
Contributed by
Codex
Basic Example
The call to count_users returns the number of users with each role. It will not return any roles having count == 0, so the results are intended to be used in foreach loops.
$result = count_users(); echo 'There are ', $result['total_users'], ' total users'; foreach( $result['avail_roles'] as $role => $count ) echo ', ', $count, ' are ', $role, 's'; echo '.';
Output example is:
There are 199 total users, 11 are administrators, 4 are contributors.
你可能对这些文章感兴趣:
- wordpress函数gd_edit_image_support()用法示例
- wordpress函数funky_javascript_callback()用法示例
- wordpress函数funky_javascript_fix()用法示例
- wordpress函数gallery_shortcode()用法示例
- wordpress函数format_to_edit()用法示例
- wordpress函数format_to_post()用法示例
- wordpress函数form_option()用法示例
- wordpress函数force_ssl_login()用法示例
- wordpress函数format_code_lang()用法示例
- wordpress函数format_for_editor()用法示例
- wordpress函数force_ssl_content()用法示例
- wordpress函数flush_rewrite_rules()用法示例
- wordpress函数force_balance_tags()用法示例
- wordpress函数force_ssl_admin()用法示例
如有疑问,请前往问答中心反馈!
反馈