WordPress.org

Make WordPress Core

Ticket #7723: 7723-01.diff

File 7723-01.diff, 4.4 KB (added by Master Jake, 5 years ago)
  • wp-admin/includes/ajax-actions.php

     
    8787        wp_die();
    8888}
    8989
     90function wp_ajax_ajax_author_search() {
     91        if ( isset( $_GET[ 'term' ] ) ) {
     92                $sanitized_term = sanitize_key( $_GET[ 'term' ] );
     93               
     94                if ( strlen( $sanitized_term ) < 2 )
     95                        wp_die( 0 );
     96               
     97                $users = get_users(
     98                        array(
     99                                'order_by' => 'display_name',
     100                                'search' => '*' . $sanitized_term . '*',
     101                                'who' => 'authors'
     102                        )
     103                );
     104               
     105                $json = array();
     106               
     107                foreach ( $users as $user ) {
     108                        $json[] = (object) array(
     109                                'label' => $user->data->display_name,
     110                                'value' => $user->data->ID
     111                        );
     112                }
     113               
     114                wp_send_json( $json );
     115        } else {
     116                wp_die( 0 );
     117        }
     118}
     119
    90120function wp_ajax_wp_compression_test() {
    91121        if ( !current_user_can( 'manage_options' ) )
    92122                wp_die( -1 );
  • wp-admin/includes/class-wp-posts-list-table.php

     
    214214                                );
    215215                                wp_dropdown_categories( $dropdown_options );
    216216                        }
     217                       
     218                        if ( is_multi_author() )
     219                                $this->authors_dropdown();
     220                       
    217221                        do_action( 'restrict_manage_posts' );
    218222                        submit_button( __( 'Filter' ), 'button', false, false, array( 'id' => 'post-query-submit' ) );
    219223                }
     
    225229                </div>
    226230<?php
    227231        }
     232       
     233        function authors_dropdown() {
     234                $author =
     235                        isset( $_GET[ 'author' ] )
     236                        ? absint( $_GET[ 'author' ] )
     237                        : 0;
     238               
     239                $author_user = get_user_by( 'id', $author );
     240               
     241                $count_users = count_users();
     242               
     243                if ( $count_users[ 'total_users' ] >= apply_filters( 'authors_dropdown_max', 20 ) ) {
     244?>
     245                        <input type="hidden" name="author" id="author-filter" value="<?php echo false !== $author_user ? esc_attr( $author ) : '0'; ?>" />
     246                        <input type="text" name="" id="author-filter-autocomplete" value="<?php echo false !== $author_user ? esc_attr( $author_user->data->display_name ) : ''; ?>" placeholder="<?php esc_attr( _e( 'Show all authors' ) ); ?>" size="20" class="hide-if-no-js" />
     247<?php
     248                } else {
     249                        $users = get_users(
     250                                array(
     251                                        'orderby' => 'display_name',
     252                                        'who' => 'authors'
     253                                )
     254                        );
     255?>
     256                        <select name="author" id="author-filter">
     257                                <option value="0"><?php esc_html( _e( 'Show all authors' ) ); ?></option>
     258                                <?php foreach( $users as $user ) { ?>
     259                                        <option value="<?php echo esc_attr( $user->data->ID ); ?>"<?php selected( $author, $user->data->ID ); ?>>
     260                                                <?php echo esc_html( $user->data->display_name ); ?>
     261                                        </option>
     262                                <?php } ?>
     263                        </select>
     264<?php
     265                }
     266        }
    228267
    229268        function current_action() {
    230269                if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) )
  • wp-admin/admin-ajax.php

     
    4141do_action( 'admin_init' );
    4242
    4343$core_actions_get = array(
    44         'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
     44        'fetch-list', 'ajax-tag-search', 'ajax-author-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
    4545        'autocomplete-user', 'dashboard-widgets', 'logged-in',
    4646);
    4747
  • wp-admin/edit.php

     
    152152$wp_list_table->prepare_items();
    153153
    154154wp_enqueue_script('inline-edit-post');
     155wp_enqueue_script( 'post-filters' );
    155156
    156157$title = $post_type_object->labels->name;
    157158
  • wp-includes/script-loader.php

     
    437437                did_action( 'init' ) && $scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array(
    438438                        'error' => __('Error while saving the changes.')
    439439                ) );
     440               
     441                $scripts->add( 'post-filters', "/wp-admin/js/post-filters$suffix.js", array( 'jquery', 'jquery-ui-autocomplete' ), false, 1 );
    440442
    441443                $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), false, 1 );
    442444                did_action( 'init' ) && $scripts->localize( 'plugin-install', 'plugininstallL10n', array(