WordPress.org

Make WordPress Core

Ticket #18158: 18158.3.diff

File 18158.3.diff, 887 bytes (added by scribu, 4 years ago)
  • wp-includes/meta.php

    diff --git wp-includes/meta.php wp-includes/meta.php
    index 3caa808..1e235cc 100644
    class WP_Meta_Query { 
    719719                        $i = count( $join ); 
    720720                        $alias = $i ? 'mt' . $i : $meta_table; 
    721721 
    722                         // Set JOIN 
     722                        if ( in_array( strtoupper( $q['compare'] ), array( 'EXISTS', 'NOT EXISTS' ) ) ) { 
     723                                $join[$i]  = "LEFT JOIN $meta_table"; 
     724                                $join[$i] .= $i ? " AS $alias" : ''; 
     725                                $join[$i] .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column AND $alias.meta_key = '$meta_key')"; 
     726 
     727                                $where[$k] = ' ' . $alias . '.' . $meta_id_column . ' IS ' . ( ( strtoupper( $q['compare'] ) == 'EXISTS' ) ? 'NOT ' : '' ) . 'NULL'; 
     728 
     729                                continue; 
     730                        } 
     731 
    723732                        $join[$i]  = "INNER JOIN $meta_table"; 
    724733                        $join[$i] .= $i ? " AS $alias" : ''; 
    725734                        $join[$i] .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column)";