Changeset 31312 for trunk/src/wp-includes/query.php
- Timestamp:
- 01/31/2015 03:47:51 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/query.php
r31219 r31312 2234 2234 $primary_meta_key = ''; 2235 2235 $primary_meta_query = false; 2236 if ( ! empty( $this->meta_query->queries ) ) { 2237 $primary_meta_query = reset( $this->meta_query->queries ); 2236 $meta_clauses = $this->meta_query->get_clauses(); 2237 if ( ! empty( $meta_clauses ) ) { 2238 $primary_meta_query = reset( $meta_clauses ); 2238 2239 2239 2240 if ( ! empty( $primary_meta_query['key'] ) ) { … … 2244 2245 $allowed_keys[] = 'meta_value'; 2245 2246 $allowed_keys[] = 'meta_value_num'; 2247 $allowed_keys = array_merge( $allowed_keys, array_keys( $meta_clauses ) ); 2246 2248 } 2247 2249 … … 2261 2263 case 'menu_order': 2262 2264 case 'comment_count': 2263 $orderby = "$wpdb->posts.{$orderby}";2265 $orderby_clause = "$wpdb->posts.{$orderby}"; 2264 2266 break; 2265 2267 case 'rand': 2266 $orderby = 'RAND()';2268 $orderby_clause = 'RAND()'; 2267 2269 break; 2268 2270 case $primary_meta_key: 2269 2271 case 'meta_value': 2270 2272 if ( ! empty( $primary_meta_query['type'] ) ) { 2271 $sql_type = $this->meta_query->get_cast_for_type( $primary_meta_query['type'] ); 2272 $orderby = "CAST($wpdb->postmeta.meta_value AS {$sql_type})"; 2273 $orderby_clause = "CAST({$primary_meta_query['alias']}.meta_value AS {$primary_meta_query['cast']})"; 2273 2274 } else { 2274 $orderby = "$wpdb->postmeta.meta_value";2275 $orderby_clause = "{$primary_meta_query['alias']}.meta_value"; 2275 2276 } 2276 2277 break; 2277 2278 case 'meta_value_num': 2278 $orderby = "$wpdb->postmeta.meta_value+0";2279 $orderby_clause = "{$primary_meta_query['alias']}.meta_value+0"; 2279 2280 break; 2280 2281 default: 2281 $orderby = "$wpdb->posts.post_" . $orderby; 2282 if ( array_key_exists( $orderby, $meta_clauses ) ) { 2283 // $orderby corresponds to a meta_query clause. 2284 $meta_clause = $meta_clauses[ $orderby ]; 2285 $orderby_clause = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})"; 2286 } else { 2287 // Default: order by post field. 2288 $orderby_clause = "$wpdb->posts.post_" . sanitize_key( $orderby ); 2289 } 2290 2282 2291 break; 2283 2292 } 2284 2293 2285 return $orderby ;2294 return $orderby_clause; 2286 2295 } 2287 2296 … … 2813 2822 2814 2823 $where .= $search . $whichauthor . $whichmimetype; 2824 2825 if ( ! empty( $this->meta_query->queries ) ) { 2826 $clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this ); 2827 $join .= $clauses['join']; 2828 $where .= $clauses['where']; 2829 } 2815 2830 2816 2831 $rand = ( isset( $q['orderby'] ) && 'rand' === $q['orderby'] ); … … 3029 3044 3030 3045 $where .= ')'; 3031 }3032 3033 if ( !empty( $this->meta_query->queries ) ) {3034 $clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this );3035 $join .= $clauses['join'];3036 $where .= $clauses['where'];3037 3046 } 3038 3047
Note: See TracChangeset
for help on using the changeset viewer.