Make WordPress Core

Ticket #22096: meta-value-empty-array.diff

File meta-value-empty-array.diff, 1.0 KB (added by wonderboymusic, 11 years ago)
  • wp-includes/meta.php

     
    678678                }
    679679
    680680                // WP_Query sets 'meta_value' = '' by default
    681                 if ( isset( $qv[ 'meta_value' ] ) && '' !== $qv[ 'meta_value' ] )
     681                if ( isset( $qv[ 'meta_value' ] ) && '' !== $qv[ 'meta_value' ] && ( ! is_array( $qv[ 'meta_value' ] ) || $qv[ 'meta_value' ] ) )
    682682                        $meta_query[0]['value'] = $qv[ 'meta_value' ];
    683683
    684684                if ( !empty( $qv['meta_query'] ) && is_array( $qv['meta_query'] ) ) {
     
    714714                $key_only_queries = array();
    715715                $queries = array();
    716716
     717                // Split out the queries with empty arrays as value
     718                foreach ( $this->queries as $k => $q ) {
     719                        if ( is_array( $q['value'] ) && empty( $q['value'] ) ) {
     720                                $key_only_queries[$k] = $q;
     721                                unset( $this->queries[$k] );
     722                        }
     723                }               
     724               
    717725                // Split out the meta_key only queries (we can only do this for OR)
    718726                if ( 'OR' == $this->relation ) {
    719727                        foreach ( $this->queries as $k => $q ) {