WordPress.org

Make WordPress Core

Ticket #15871: 15871.diff

File 15871.diff, 3.7 KB (added by scribu, 7 years ago)

Exclude subscribers

  • wp-includes/user.php

     
    961961 * <li>id - Default is the value of the 'name' parameter. ID attribute of select element.</li>
    962962 * <li>class - Class attribute of select element.</li>
    963963 * <li>blog_id - ID of blog (Multisite only). Defaults to ID of current blog.</li>
     964 * <li>users - Raw array of users.</li>
    964965 * </ol>
    965966 *
    966967 * @since 2.3.0
     
    970971 * @return string|null Null on display. String of HTML content on retrieve.
    971972 */
    972973function wp_dropdown_users( $args = '' ) {
    973         global $wpdb;
    974974        $defaults = array(
    975975                'show_option_all' => '', 'show_option_none' => '',
    976976                'orderby' => 'display_name', 'order' => 'ASC',
    977977                'include' => '', 'exclude' => '', 'multi' => 0,
    978978                'show' => 'display_name', 'echo' => 1,
    979                 'selected' => 0, 'name' => 'user', 'class' => '', 'blog_id' => $GLOBALS['blog_id'],
    980                 'id' => '',
     979                'selected' => 0, 'name' => 'user', 'class' => '', 'id' => '',
     980                'blog_id' => $GLOBALS['blog_id'], 'users' => null
    981981        );
    982982
    983983        $defaults['selected'] = is_author() ? get_query_var( 'author' ) : 0;
     
    985985        $r = wp_parse_args( $args, $defaults );
    986986        extract( $r, EXTR_SKIP );
    987987
    988         $query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order' ) );
    989         $query_args['fields'] = array( 'ID', $show );
     988        if ( is_null( $users ) ) {
     989                $query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order' ) );
     990                $query_args['fields'] = array( 'ID', $show );
     991                $users = get_users( $query_args );
     992        }
    990993
    991         $users = get_users( $query_args );
    992 
    993994        $output = '';
    994995        if ( !empty($users) ) {
    995996                $name = esc_attr( $name );
  • wp-admin/includes/class-wp-posts-list-table.php

     
    688688         * @since 3.1.0
    689689         */
    690690        function inline_edit() {
    691                 global $mode;
     691                global $mode, $wpdb, $blog_id;
    692692
    693693                $screen = get_current_screen();
    694694
     
    757757                                <?php touch_time( 1, 1, 4, 1 ); ?>
    758758                        </div>
    759759                        <br class="clear" />
    760 
    761760        <?php endif; // $bulk
    762761
    763762                if ( post_type_supports( $screen->post_type, 'author' ) ) :
    764763                        $authors_dropdown = '';
    765764
    766765                        if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) :
    767                                 $users_opt = array(
    768                                         'name' => 'post_author',
    769                                         'class'=> 'authors',
    770                                         'multi' => 1,
    771                                         'echo' => 0
    772                                 );
    773                                 if ( $bulk )
    774                                         $users_opt['show_option_none'] = __( '&mdash; No Change &mdash;' );
    775                                 $authors_dropdown  = '<label>';
    776                                 $authors_dropdown .= '<span class="title">' . __( 'Author' ) . '</span>';
    777                                 $authors_dropdown .= wp_dropdown_users( $users_opt );
    778                                 $authors_dropdown .= '</label>';
     766                                $users = get_users( array(
     767                                        'fields' => array( 'ID', 'display_name' ),
     768                                        'blog_id' => 0,
     769                                        'meta_key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
     770                                        'meta_value' => '"subscriber"',
     771                                        'meta_compare' => 'NOT LIKE',
     772                                        'orderby' => 'display_name',
     773                                        'order' => 'ASC'
     774                                ) );
     775
     776                                if ( count( $users ) > 1 ) :   
     777                                        $users_opt = array(
     778                                                'users' => $users,
     779                                                'name' => 'post_author',
     780                                                'class'=> 'authors',
     781                                                'multi' => 1,
     782                                                'echo' => 0
     783                                        );
     784                                        if ( $bulk )
     785                                                $users_opt['show_option_none'] = __( '&mdash; No Change &mdash;' );
     786                                        $authors_dropdown  = '<label>';
     787                                        $authors_dropdown .= '<span class="title">' . __( 'Author' ) . '</span>';
     788                                        $authors_dropdown .= wp_dropdown_users( $users_opt );
     789                                        $authors_dropdown .= '</label>';
     790                                endif;
    779791                        endif; // authors
    780792        ?>
    781793