WordPress.org

Make WordPress Core

Ticket #38922: 38922.6.diff

File 38922.6.diff, 5.6 KB (added by adamsilverstein, 3 years ago)
  • src/wp-admin/includes/ajax-actions.php

    diff --git a/src/wp-admin/includes/ajax-actions.php b/src/wp-admin/includes/ajax-actions.php
    index 3342cad..084dc55 100644
    a b function wp_ajax_fetch_list() { 
    9999}
    100100
    101101/**
    102  * Ajax handler for tag search.
    103  *
    104  * @since 3.1.0
    105  */
    106 function wp_ajax_ajax_tag_search() {
    107         if ( ! isset( $_GET['tax'] ) ) {
    108                 wp_die( 0 );
    109         }
    110 
    111         $taxonomy = sanitize_key( $_GET['tax'] );
    112         $tax = get_taxonomy( $taxonomy );
    113         if ( ! $tax ) {
    114                 wp_die( 0 );
    115         }
    116 
    117         if ( ! current_user_can( $tax->cap->assign_terms ) ) {
    118                 wp_die( -1 );
    119         }
    120 
    121         $s = wp_unslash( $_GET['q'] );
    122 
    123         $comma = _x( ',', 'tag delimiter' );
    124         if ( ',' !== $comma )
    125                 $s = str_replace( $comma, ',', $s );
    126         if ( false !== strpos( $s, ',' ) ) {
    127                 $s = explode( ',', $s );
    128                 $s = $s[count( $s ) - 1];
    129         }
    130         $s = trim( $s );
    131 
    132         /**
    133          * Filters the minimum number of characters required to fire a tag search via Ajax.
    134          *
    135          * @since 4.0.0
    136          *
    137          * @param int         $characters The minimum number of characters required. Default 2.
    138          * @param WP_Taxonomy $tax        The taxonomy object.
    139          * @param string      $s          The search term.
    140          */
    141         $term_search_min_chars = (int) apply_filters( 'term_search_min_chars', 2, $tax, $s );
    142 
    143         /*
    144          * Require $term_search_min_chars chars for matching (default: 2)
    145          * ensure it's a non-negative, non-zero integer.
    146          */
    147         if ( ( $term_search_min_chars == 0 ) || ( strlen( $s ) < $term_search_min_chars ) ){
    148                 wp_die();
    149         }
    150 
    151         $results = get_terms( $taxonomy, array( 'name__like' => $s, 'fields' => 'names', 'hide_empty' => false ) );
    152 
    153         echo join( $results, "\n" );
    154         wp_die();
    155 }
    156 
    157 /**
    158102 * Ajax handler for compression testing.
    159103 *
    160104 * @since 3.1.0
  • src/wp-admin/includes/deprecated.php

    diff --git a/src/wp-admin/includes/deprecated.php b/src/wp-admin/includes/deprecated.php
    index 2bf25d3..9cd4653 100644
    a b function post_form_autocomplete_off() { 
    13961396                echo ' autocomplete="off"';
    13971397        }
    13981398}
     1399
     1400/**
     1401 * Ajax handler for tag search.
     1402 *
     1403 * @deprecated 4.8.0 Use the REST API tags endpoint instead.
     1404 *
     1405 * @since 3.1.0
     1406 */
     1407function wp_ajax_ajax_tag_search() {
     1408        _deprecated_function( __FUNCTION__, '4.8', '/wp-json/wp/v2/tags' );
     1409
     1410        if ( ! isset( $_GET['tax'] ) ) {
     1411                wp_die( 0 );
     1412        }
     1413
     1414        $taxonomy = sanitize_key( $_GET['tax'] );
     1415        $tax = get_taxonomy( $taxonomy );
     1416        if ( ! $tax ) {
     1417                wp_die( 0 );
     1418        }
     1419
     1420        if ( ! current_user_can( $tax->cap->assign_terms ) ) {
     1421                wp_die( -1 );
     1422        }
     1423
     1424        $s = wp_unslash( $_GET['q'] );
     1425
     1426        $comma = _x( ',', 'tag delimiter' );
     1427        if ( ',' !== $comma )
     1428                $s = str_replace( $comma, ',', $s );
     1429        if ( false !== strpos( $s, ',' ) ) {
     1430                $s = explode( ',', $s );
     1431                $s = $s[count( $s ) - 1];
     1432        }
     1433        $s = trim( $s );
     1434
     1435        /** This filter is documented in wp-includes/script-loader.php */
     1436        $term_search_min_chars = (int) apply_filters( 'term_search_min_chars', 2, $tax, $s );
     1437
     1438        /*
     1439         * Require $term_search_min_chars chars for matching (default: 2)
     1440         * ensure it's a non-negative, non-zero integer.
     1441         */
     1442        if ( ( $term_search_min_chars == 0 ) || ( strlen( $s ) < $term_search_min_chars ) ){
     1443                wp_die();
     1444        }
     1445
     1446        $results = get_terms( $taxonomy, array( 'name__like' => $s, 'fields' => 'names', 'hide_empty' => false ) );
     1447
     1448        echo join( $results, "\n" );
     1449        wp_die();
     1450}
  • src/wp-admin/js/tags-suggest.js

    diff --git a/src/wp-admin/js/tags-suggest.js b/src/wp-admin/js/tags-suggest.js
    index 6465cc9..d0399a0 100644
    a b  
    66                return;
    77        }
    88
    9         var tempID = 0;
    109        var separator = window.tagsSuggestL10n.tagDelimiter || ',';
    1110
    1211        function split( val ) {
     
    5352
    5453                                term = getLast( request.term );
    5554
    56                                 $.get( window.ajaxurl, {
    57                                         action: 'ajax-tag-search',
    58                                         tax: taxonomy,
    59                                         q: term
     55                                $.get( window.tagsSuggestL10n.restURL, {
     56                                        taxonomy: taxonomy,
     57                                        search: term
    6058                                } ).always( function() {
    6159                                        $element.removeClass( 'ui-autocomplete-loading' ); // UI fails to remove this sometimes?
    6260                                } ).done( function( data ) {
    63                                         var tagName;
    64                                         var tags = [];
    65 
    66                                         if ( data ) {
    67                                                 data = data.split( '\n' );
    68 
    69                                                 for ( tagName in data ) {
    70                                                         var id = ++tempID;
    71 
    72                                                         tags.push({
    73                                                                 id: id,
    74                                                                 name: data[tagName]
    75                                                         });
    76                                                 }
    77 
    78                                                 cache = tags;
    79                                                 response( tags );
    80                                         } else {
    81                                                 response( tags );
    82                                         }
     61                                        cache = data;
     62                                        response( data );
    8363                                } );
    8464
    8565                                last = request.term;
     
    11898                        close: function() {
    11999                                $element.attr( 'aria-expanded', 'false' );
    120100                        },
    121                         minLength: 2,
     101                        minLength: window.tagsSuggestL10n.minChars,
    122102                        position: {
    123103                                my: 'left top+2',
    124104                                at: 'left bottom',
  • src/wp-includes/script-loader.php

    diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
    index def438c..2cbd0e5 100644
    a b function wp_default_scripts( &$scripts ) { 
    547547                        'termSelected' => __( 'Term selected.' ),
    548548                        'termAdded'    => __( 'Term added.' ),
    549549                        'termRemoved'  => __( 'Term removed.' ),
     550                        'restURL'      => rest_url( '/wp/v2/tags' ),
     551
     552                        /**
     553                         * Filters the minimum number of characters required to fire a tag search via Ajax.
     554                         *
     555                         * Previous to 4.8.0, this filter passed taxonomy and search context parameters.
     556
     557                         * @since 4.0.0
     558                         *
     559                         * @param int         $characters The minimum number of characters required. Default 2.
     560                         */
     561                        'minChars'     => (int) apply_filters( 'term_search_min_chars', 2 ),
    550562                ) );
    551563
    552564                $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array( 'suggest', 'wp-lists', 'postbox', 'tags-box', 'underscore', 'word-count', 'wp-a11y' ), false, 1 );