Make WordPress Core


Ignore:
Timestamp:
09/06/2010 11:28:59 AM (15 years ago)
Author:
scribu
Message:

Use _wp_meta_sql() in WP_Query. See #14572. See #14645

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/functions.php

    r15580 r15581  
    42554255    $clauses = array();
    42564256
     4257    $join = '';
     4258    $where = '';
     4259    $i = 0;
    42574260    foreach ( $queries as $q ) {
    42584261        $meta_key = isset( $q['meta_key'] ) ? trim( $q['meta_key'] ) : '';
     
    42634266            $meta_compare = '=';
    42644267
    4265         if ( empty( $meta_key ) )
     4268        if ( empty( $meta_key ) && empty( $meta_value ) )
    42664269            continue;
    42674270
    4268         if ( empty( $meta_value ) ) {
    4269             $clauses[ $meta_key ] = "";
    4270         } elseif ( 'like' == $meta_compare ) {
    4271             $clauses[ $meta_key ] = $wpdb->prepare( "LIKE %s", '%' . like_escape( $meta_value ) . '%' );
    4272         } else {
    4273             $clauses[ $meta_key ] = $wpdb->prepare( "$meta_compare %s", $meta_value );
    4274         }
    4275     }
    4276 
    4277     if ( empty( $clauses ) )
    4278         return array('', '');
    4279 
    4280     $join = '';
    4281     $where = '';
    4282 
    4283     $i = 0;
    4284     foreach ( $clauses as $meta_key => $value_query ) {
    42854271        $alias = $i ? 'mt' . $i : $meta_table;
    42864272
     
    42894275        $join .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column)";
    42904276
    4291         $where .= $wpdb->prepare( " AND $alias.meta_key = %s", $meta_key );
    4292         if ( !empty( $value_query ) )
    4293             $where .= " AND $alias.meta_value $value_query";
    4294            
    42954277        $i++;
     4278
     4279        if ( !empty( $meta_key ) )
     4280            $where .= $wpdb->prepare( " AND $alias.meta_key = %s", $meta_key );
     4281
     4282        if ( empty( $meta_value ) )
     4283            continue;
     4284
     4285        if ( 'like' == $meta_compare ) {
     4286            $where .= $wpdb->prepare( " AND $alias.meta_value LIKE %s", '%' . like_escape( $meta_value ) . '%' );
     4287        } else {
     4288            $where .= $wpdb->prepare( " AND $alias.meta_value $meta_compare %s", $meta_value );
     4289        }
    42964290    }
    42974291
Note: See TracChangeset for help on using the changeset viewer.