Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




count_users [ WordPress Function ]

count_users ( $strategy = 'time' )
Parameters:
  • (string) $strategy 'time' or 'memory'
Returns:
  • (array) Includes a grand total and an array of counts indexed by role strings.
Defined at:



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 #12257.

Source


<?php
function count_users($strategy 'time') {
    global 
$wpdb$wp_roles;

    
// Initialize
    
$id get_current_blog_id();
    
$blog_prefix $wpdb->get_blog_prefix($id);
    
$result = array();

    if ( 
'time' == $strategy ) {
        global 
$wp_roles;

        if ( ! isset( 
$wp_roles ) )
            
$wp_roles = new WP_Roles();

        
$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[] = "COUNT(NULLIF(`meta_value` LIKE '%\"" like_escape$this_role ) . "\"%', 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 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;
            }
        }

        
// 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();

        
$users_of_blog $wpdb->get_col"SELECT meta_value FROM $wpdb->usermeta 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;
            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;
    }

    return 
$result;
}
?>

Examples [ wp-snippets.com ]

Google Arama Sonuçlarý

Dahasý ...

Kullanýcý Tartýþmalarý [ wordpress.org ]

- Bulunamadý -

Yeni bir konu yaz ...

0 User Note(s)

Henüz yok. Ýlk sen ol!

Yeni Ekle ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics