| 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')) ) |
| 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); |