WordPress.org

Make WordPress Core

Ticket #33967: 33967.7.patch

File 33967.7.patch, 2.5 KB (added by PieWP, 5 years ago)

Improved performance

  • src/wp-admin/includes/class-wp-ms-sites-list-table.php

     
    388388         * Handles the users column output.
    389389         *
    390390         * @since 4.3.0
     391         * @since 4.7.0 Display First user of the site, and number of users in the site
    391392         * @access public
    392393         *
    393394         * @param array $blog Current site.
    394395         */
    395396        public function column_users( $blog ) {
     397                global $mode;
     398               
    396399                $user_count = wp_cache_get( $blog['blog_id'] . '_user_count', 'blog-details' );
    397400                if ( ! $user_count ) {
    398                         $blog_users = get_users( array( 'blog_id' => $blog['blog_id'], 'fields' => 'ID' ) );
    399                         $user_count = count( $blog_users );
    400                         unset( $blog_users );
     401                        $blog_users = new WP_User_Query( array( 'blog_id' => $blog['blog_id'], 'fields' => 'ID', 'count_total' => true, 'number' => 1 ) );
     402                        $user_count = $blog_users->total_users;
     403                        unset($blog_users);
     404                       
    401405                        wp_cache_set( $blog['blog_id'] . '_user_count', $user_count, 'blog-details', 12 * HOUR_IN_SECONDS );
    402406                }
    403 
    404                 printf(
    405                         '<a href="%s">%s</a>',
    406                         esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
    407                         number_format_i18n( $user_count )
    408                 );
     407               
     408                if ( empty ( $user_count ) ) {
     409                        printf( __( 'There are no users in this site' ) );
     410                } elseif ( 'excerpt' === $mode) {
     411                       
     412                        $blog_users = get_users(array(
     413                                'blog_id' => $blog['blog_id'],
     414                                'orderby' => 'registered',
     415                                'fields' => array('ID', 'user_login'),
     416                                'number' => 10
     417                        ));
     418                       
     419                        foreach ( $blog_users as $key => $user )
     420                        {
     421                                if ( 0 !== $key )
     422                                        echo '</br>';
     423                                       
     424                                printf(
     425                                        '<a href="%s">%s</a>',
     426                                        esc_url( network_admin_url( 'user-edit.php?user_id=' . $user->ID ) ),
     427                                        $user->user_login
     428                                );
     429                        }
     430                       
     431                        // Only display 10 first users
     432                        if ( $user_count > 10 ) {
     433                                printf( '</br><a href="%s">%s</a>',
     434                                        esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
     435                                        sprintf(
     436                                                _x( '+ %s more users', 'Number of users of a site of a network (in admin page : wp-admin/network/sites.php)' ),
     437                                                number_format_i18n( $user_count - 10 )
     438                                        )
     439                                );
     440                                break;
     441                        }
     442                       
     443                        unset( $blog_users );
     444                       
     445                } else {
     446                        printf(
     447                                '<a href="%s">%s</a>',
     448                                esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
     449                                number_format_i18n( $user_count )
     450                        );
     451                }
    409452        }
    410453
    411454        /**