WordPress.org

Make WordPress Core

Ticket #25538: meta.php.diff

File meta.php.diff, 1.1 KB (added by jackreichert, 6 years ago)

Pulls meta_key condition to outside of OR parentheses

  • src/wp-includes/meta.php

    diff --git src/wp-includes/meta.php src/wp-includes/meta.php
    index 55beadb..10436ae 100644
    class WP_Meta_Query { 
    770770                                $where["key-only-$key"] = $wpdb->prepare( "$meta_table.meta_key = %s", trim( $q['key'] ) );
    771771                }
    772772
     773                $where_meta_key = array();
    773774                foreach ( $queries as $k => $q ) {
    774775                        $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : '';
    775776                        $meta_type = $this->get_cast_for_type( isset( $q['type'] ) ? $q['type'] : '' );
    class WP_Meta_Query { 
    813814
    814815                        $where[$k] = '';
    815816                        if ( !empty( $meta_key ) )
    816                                 $where[$k] = $wpdb->prepare( "$alias.meta_key = %s", $meta_key );
     817                                $where_meta_key[$k] = $wpdb->prepare( "$alias.meta_key = %s", $meta_key );
    817818
    818819                        if ( is_null( $meta_value ) ) {
    819820                                if ( empty( $where[$k] ) )
    class WP_Meta_Query { 
    858859                else
    859860                        $where = ' AND (' . implode( "\n{$this->relation} ", $where ) . ' )';
    860861
     862                if ( !empty($where_meta_key) ) {
     863                        $where .= "\nAND " . implode( "\nAND ", $where_meta_key );
     864                }
     865               
    861866                $join = implode( "\n", $join );
    862867                if ( ! empty( $join ) )
    863868                        $join = ' ' . $join;