diff --git src/wp-includes/meta.php src/wp-includes/meta.php
index dc19833..299bd41 100644
|
|
class WP_Meta_Query { |
770 | 770 | $where["key-only-$key"] = $wpdb->prepare( "$meta_table.meta_key = %s", trim( $q['key'] ) ); |
771 | 771 | } |
772 | 772 | |
| 773 | $where_meta_key = array(); |
773 | 774 | foreach ( $queries as $k => $q ) { |
774 | 775 | $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : ''; |
775 | 776 | $meta_type = $this->get_cast_for_type( isset( $q['type'] ) ? $q['type'] : '' ); |
… |
… |
class WP_Meta_Query { |
812 | 813 | $join[$i] .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column)"; |
813 | 814 | |
814 | 815 | $where[$k] = ''; |
815 | | if ( !empty( $meta_key ) ) |
816 | | $where[$k] = $wpdb->prepare( "$alias.meta_key = %s", $meta_key ); |
| 816 | if ( !empty( $meta_key ) ) { |
| 817 | if( isset($q['compare']) ) { |
| 818 | $where_meta_key[$k] = $wpdb->prepare( "$alias.meta_key = %s", $meta_key ); |
| 819 | } else { |
| 820 | $where[$k] = $wpdb->prepare( "$alias.meta_key = %s", $meta_key ); |
| 821 | } |
| 822 | } |
817 | 823 | |
818 | 824 | if ( is_null( $meta_value ) ) { |
819 | | if ( empty( $where[$k] ) ) |
| 825 | if ( empty( $where[$k] ) && empty($where_meta_key) ) |
820 | 826 | unset( $join[$i] ); |
821 | 827 | continue; |
822 | 828 | } |
… |
… |
class WP_Meta_Query { |
858 | 864 | else |
859 | 865 | $where = ' AND (' . implode( "\n{$this->relation} ", $where ) . ' )'; |
860 | 866 | |
| 867 | if ( !empty($where_meta_key) ) { |
| 868 | $where .= "\nAND " . implode( "\nAND ", $where_meta_key ); |
| 869 | } |
| 870 | |
861 | 871 | $join = implode( "\n", $join ); |
862 | 872 | if ( ! empty( $join ) ) |
863 | 873 | $join = ' ' . $join; |