WordPress.org

Make WordPress Core

Ticket #19729: meta.diff

File meta.diff, 1.1 KB (added by joehoyle, 4 years ago)
  • wp-includes/meta.php

     
    707707                $join = array(); 
    708708                $where = array(); 
    709709 
     710                $key_only_queries = array(); 
     711                $queries = array(); 
     712                 
     713                // Split out the meta_key only queries (we can only do this for OR) 
    710714                foreach ( $this->queries as $k => $q ) { 
     715                        if ( $this->relation == 'OR' && ! isset( $q['value'] ) && ! empty( $q['key'] ) ) 
     716                                $key_only_queries[$k] = $q; 
     717                         
     718                        else 
     719                                $queries[$k] = $q; 
     720                } 
     721                 
     722                // Specify all the meta_key only queries in one go 
     723                if ( $key_only_queries ) { 
     724                        $join[]  = "INNER JOIN $meta_table ON $primary_table.$primary_id_column = $meta_table.$meta_id_column"; 
     725                         
     726                        foreach ( $key_only_queries as $key => $q ) 
     727                                $where["key-only-$key"] = $wpdb->prepare( "$meta_table.meta_key = %s", trim( $q['key'] ) ); 
     728                } 
     729                                                 
     730                foreach ( $queries as $k => $q ) { 
    711731                        $meta_key = isset( $q['key'] ) ? trim( $q['key'] ) : ''; 
    712732                        $meta_type = isset( $q['type'] ) ? strtoupper( $q['type'] ) : 'CHAR'; 
    713733