WordPress.org

Make WordPress Core

Ticket #9124: 9124.9.diff

File 9124.9.diff, 3.5 KB (added by aaroncampbell, 4 years ago)
  • wp-includes/classes.php

     
    275275 
    276276                        if ( !empty( $this->query_vars[$wpvar] ) ) { 
    277277                                if ( ! is_array( $this->query_vars[$wpvar] ) ) { 
    278                                         $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar];  
     278                                        $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar]; 
    279279                                } else { 
    280280                                        foreach ( $this->query_vars[$wpvar] as $vkey => $v ) 
    281281                                                $this->query_vars[$wpvar][$vkey] = (string) $v; 
     
    550550         * A query is an associative array: 
    551551         * - 'key' string The meta key 
    552552         * - 'value' string|array The meta value 
    553          * - 'compare' (optional) string How to compare the key to the value.  
    554          *              Possible values: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'IN', 'BETWEEN'.  
     553         * - 'compare' (optional) string How to compare the key to the value. 
     554         *              Possible values: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'IN', 'BETWEEN'. 
    555555         *              Default: '=' 
    556556         * - 'type' string (optional) The type of the value. 
    557          *              Possible values: 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'.  
     557         *              Possible values: 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'. 
    558558         *              Default: 'CHAR' 
    559559         * 
    560560         * @since 3.1.0 
     
    573573         *              Possible values: 'term_id', 'slug' or 'name' 
    574574         *              Default: 'slug' 
    575575         * - 'operator' string (optional) 
    576          *              Possible values: 'IN' and 'NOT IN'.  
     576         *              Possible values: 'IN' and 'NOT IN'. 
    577577         *              Default: 'IN' 
    578          * - 'include_children' bool (optional) Wether to include child terms.  
     578         * - 'include_children' bool (optional) Wether to include child terms. 
    579579         *              Default: true 
    580580         * 
    581581         * @since 3.1.0 
     
    636636                        $meta_compare = isset( $q['compare'] ) ? strtoupper( $q['compare'] ) : '='; 
    637637                        $meta_type = isset( $q['type'] ) ? strtoupper( $q['type'] ) : 'CHAR'; 
    638638 
    639                         if ( ! in_array( $meta_compare, array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'IN', 'BETWEEN' ) ) ) 
     639                        if ( ! in_array( $meta_compare, array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) 
    640640                                $meta_compare = '='; 
    641641 
    642642                        if ( 'NUMERIC' == $meta_type ) 
     
    658658                        if ( !empty( $meta_key ) ) 
    659659                                $where .= $wpdb->prepare( " AND $alias.meta_key = %s", $meta_key ); 
    660660 
    661                         if ( in_array( $meta_compare, array( 'IN', 'BETWEEN' ) ) ) { 
     661                        if ( in_array( $meta_compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) { 
    662662                                if ( ! is_array( $meta_value ) ) 
    663663                                        $meta_value = preg_split( '/[,\s]+/', $meta_value ); 
    664664                        } else { 
     
    668668                        if ( empty( $meta_value ) ) 
    669669                                continue; 
    670670 
    671                         if ( 'IN' == $meta_compare ) { 
     671                        if ( 'IN' == substr( $meta_compare, -2) ) { 
    672672                                $meta_field_types = substr( str_repeat( ',%s', count( $meta_value ) ), 1 ); 
    673673                                $meta_compare_string = "($meta_field_types)"; 
    674674                                unset( $meta_field_types ); 
    675                         } elseif ( 'BETWEEN' == $meta_compare ) { 
     675                        } elseif ( 'BETWEEN' == substr( $meta_compare, -7) ) { 
    676676                                $meta_value = array_slice( $meta_value, 0, 2 ); 
    677677                                $meta_compare_string = '%s AND %s'; 
    678                         } elseif ( 'LIKE' == $meta_compare ) { 
     678                        } elseif ( 'LIKE' == substr( $meta_compare, -4 ) ) { 
    679679                                $meta_value = '%' . like_escape( $meta_value ) . '%'; 
    680680                                $meta_compare_string = '%s'; 
    681681                        } else { 
     
    708708                                $query['include_children'] = true; 
    709709 
    710710                        $query['do_query'] = false; 
    711                          
     711 
    712712                        $sql_single = get_objects_in_term( $query['terms'], $query['taxonomy'], $query ); 
    713713 
    714714                        if ( empty( $sql_single ) )