| 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 | |
|---|