1 | Index: wp-includes/meta.php |
---|
2 | =================================================================== |
---|
3 | --- wp-includes/meta.php (revision 19667) |
---|
4 | +++ wp-includes/meta.php (working copy) |
---|
5 | @@ -707,7 +707,27 @@ |
---|
6 | $join = array(); |
---|
7 | $where = array(); |
---|
8 | |
---|
9 | + $key_only_queries = array(); |
---|
10 | + $queries = array(); |
---|
11 | + |
---|
12 | + // Split out the meta_key only queries (we can only do this for OR) |
---|
13 | foreach ( $this->queries as $k => $q ) { |
---|
14 | + if ( $this->relation == 'OR' && ! isset( $q['value'] ) && ! empty( $q['key'] ) ) |
---|
15 | + $key_only_queries[$k] = $q; |
---|
16 | + |
---|
17 | + else |
---|
18 | + $queries[$k] = $q; |
---|
19 | + } |
---|
20 | + |
---|
21 | + // Specify all the meta_key only queries in one go |
---|
22 | + if ( $key_only_queries ) { |
---|
23 | + $join[] = "INNER JOIN $meta_table ON $primary_table.$primary_id_column = $meta_table.$meta_id_column"; |
---|
24 | + |
---|
25 | + foreach ( $key_only_queries as $key => $q ) |
---|
26 | + $where["key-only-$key"] = $wpdb->prepare( "$meta_table.meta_key = %s", trim( $q['key'] ) ); |
---|
27 | + } |
---|
28 | + |
---|
29 | + foreach ( $queries as $k => $q ) { |
---|
30 | $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : ''; |
---|
31 | $meta_type = isset( $q['type'] ) ? strtoupper( $q['type'] ) : 'CHAR'; |
---|
32 | |
---|