Make WordPress Core

Ticket #9124: 9124.4.diff

File 9124.4.diff, 1.6 KB (added by aaroncampbell, 14 years ago)
  • wp-includes/query.php

     
    23012301                if ( ! empty($q['meta_key']) )
    23022302                        $where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s ", $q['meta_key']);
    23032303                if ( ! empty($q['meta_value']) ) {
    2304                         if ( empty($q['meta_compare']) || ! in_array($q['meta_compare'], array('=', '!=', '>', '>=', '<', '<=')) )
     2304                        $q['meta_compare'] = strtoupper($q['meta_compare']);
     2305                        if ( empty($q['meta_compare']) || ! in_array($q['meta_compare'], array('=', '!=', '>', '>=', '<', '<=', 'IN', 'BETWEEN')) )
    23052306                                $q['meta_compare'] = '=';
    2306 
    2307                         $where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value {$q['meta_compare']} %s ", $q['meta_value']);
     2307                        if ( in_array($q['meta_compare'], array('IN', 'BETWEEN') ) ) {
     2308                                if ( !is_array($q['meta_value']) )
     2309                                        $q['meta_value'] = preg_split('/[,\s]+/', $q['meta_value']);
     2310                        }
     2311                        if ( 'IN' ==  $q['meta_compare'] ) {
     2312                                $meta_field_types = substr(str_repeat(',%s', count($q['meta_value'])), 1);
     2313                                $meta_compare_string = "($meta_field_types)";
     2314                                unset($meta_field_types);
     2315                        } elseif ( 'BETWEEN' ==  $q['meta_compare'] ) {
     2316                                $q['meta_value'] = array_slice( $q['meta_value'], 0, 2 );
     2317                                $meta_compare_string = '%s AND %s';
     2318                        } else {
     2319                                $meta_compare_string = '%s';
     2320                        }
     2321                        $where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value {$q['meta_compare']} {$meta_compare_string} ", $q['meta_value']);
     2322                        unset($meta_compare_string);
    23082323                }
    23092324
    23102325                // Apply filters on where and join prior to paging so that any