Changeset 15581
- Timestamp:
- 09/06/2010 11:28:59 AM (15 years ago)
- Location:
- trunk/wp-includes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/functions.php
r15580 r15581 4255 4255 $clauses = array(); 4256 4256 4257 $join = ''; 4258 $where = ''; 4259 $i = 0; 4257 4260 foreach ( $queries as $q ) { 4258 4261 $meta_key = isset( $q['meta_key'] ) ? trim( $q['meta_key'] ) : ''; … … 4263 4266 $meta_compare = '='; 4264 4267 4265 if ( empty( $meta_key ) )4268 if ( empty( $meta_key ) && empty( $meta_value ) ) 4266 4269 continue; 4267 4270 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 ) {4285 4271 $alias = $i ? 'mt' . $i : $meta_table; 4286 4272 … … 4289 4275 $join .= " ON ($primary_table.$primary_id_column = $alias.$meta_id_column)"; 4290 4276 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 4295 4277 $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 } 4296 4290 } 4297 4291 -
trunk/wp-includes/query.php
r15547 r15581 2212 2212 2213 2213 // postmeta queries 2214 if ( ! empty($q['meta_key']) || ! empty($q['meta_value']) ) 2215 $join .= " JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) "; 2216 if ( ! empty($q['meta_key']) ) 2217 $where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s ", $q['meta_key']); 2218 if ( ! empty($q['meta_value']) ) { 2219 if ( empty($q['meta_compare']) || ! in_array($q['meta_compare'], array('=', '!=', '>', '>=', '<', '<=')) ) 2220 $q['meta_compare'] = '='; 2221 2222 $where .= $wpdb->prepare("AND $wpdb->postmeta.meta_value {$q['meta_compare']} %s ", $q['meta_value']); 2223 } 2214 $meta_query = wp_array_slice_assoc( $q, array( 'meta_key', 'meta_value', 'meta_compare' ) ); 2215 list( $meta_join, $meta_where ) = _wp_meta_sql( array( $meta_query ), $wpdb->posts, 'ID', $wpdb->postmeta, 'post_id' ); 2216 $join .= $meta_join; 2217 $where .= $meta_where; 2224 2218 2225 2219 // Apply filters on where and join prior to paging so that any
Note: See TracChangeset
for help on using the changeset viewer.