2299 | | if ( ! empty($q['meta_key']) || ! empty($q['meta_value']) ) |
2300 | | $join .= " JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) "; |
2301 | | if ( ! empty($q['meta_key']) ) |
2302 | | $where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s ", $q['meta_key']); |
| 2302 | $meta_table_aliases = array(); |
| 2303 | if ( ! empty($q['meta_key']) || ! empty($q['meta_value']) ) { |
| 2304 | foreach( $q['meta_key'] as $key => $value ) { |
| 2305 | $meta_table_aliases[$key] = $wpdb->postmeta . ( $key ? '_' . $key : '' ); |
| 2306 | $join .= " JOIN $wpdb->postmeta " . ( $meta_table_aliases[$key] != $wpdb->postmeta ? "as {$meta_table_aliases[$key]} " : '' ) . "ON ($wpdb->posts.ID = {$meta_table_aliases[$key]}.post_id) "; |
| 2307 | } |
| 2308 | } |
| 2309 | if ( ! empty($q['meta_key']) ) { |
| 2310 | foreach( $q['meta_key'] as $key => $value ) { |
| 2311 | $where .= $wpdb->prepare(" AND {$meta_table_aliases[$key]}.meta_key = %s ", $value); |
| 2312 | } |
| 2313 | } |
| 2314 | |
2304 | | if ( empty($q['meta_compare']) || ! in_array($q['meta_compare'], array('=', '!=', '>', '>=', '<', '<=')) ) |
2305 | | $q['meta_compare'] = '='; |
2306 | | |
2307 | | $where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value {$q['meta_compare']} %s ", $q['meta_value']); |
| 2316 | foreach( $q['meta_key'] as $key => $value ) { |
| 2317 | if ( empty($q['meta_compare'][$key]) || ! in_array($q['meta_compare'][$key], array('=', '!=', '>', '>=', '<', '<=')) ) |
| 2318 | $q['meta_compare'][$key] = '='; |
| 2319 | $where .= $wpdb->prepare("AND {$meta_table_aliases[$key]}.meta_value {$q['meta_compare'][$key]} %s ", $q['meta_value'][$key]); |
| 2320 | } |