Changes from branches/3.1/wp-includes/query.php at r18047 to trunk/wp-includes/query.php at r18330
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/query.php
r18047 r18330 850 850 851 851 /** 852 * Metadata query container 853 * 854 * @since 3.2.0 855 * @access public 856 * @var object WP_Meta_Query 857 */ 858 var $meta_query = false; 859 860 /** 852 861 * Holds the data for a single object that is queried. 853 862 * … … 1248 1257 */ 1249 1258 var $query_vars_changed = true; 1259 1260 /** 1261 * Set if post thumbnails are cached 1262 * 1263 * @since 3.2.0 1264 * @access public 1265 * @var bool 1266 */ 1267 var $thumbnails_cached = false; 1250 1268 1251 1269 /** … … 1526 1544 unset( $tax_query ); 1527 1545 1528 _parse_meta_query( $qv );1529 1530 1546 if ( empty($qv['author']) || ($qv['author'] == '0') ) { 1531 1547 $this->is_author = false; … … 1901 1917 $q = $this->fill_query_vars($q); 1902 1918 1919 // Parse meta query 1920 $this->meta_query = new WP_Meta_Query(); 1921 $this->meta_query->parse_query_vars( $q ); 1922 1903 1923 // Set a flag if a pre_get_posts hook changed the query vars. 1904 1924 $hash = md5( serialize( $this->query_vars ) ); … … 2160 2180 $searchand = ' AND '; 2161 2181 } 2162 $term = esc_sql( like_escape( $q['s'] ) );2163 if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )2164 $search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')";2165 2182 2166 2183 if ( !empty($search) ) { … … 2234 2251 unset( $tag_query ); 2235 2252 } 2253 } 2254 2255 if ( !empty( $this->tax_query->queries ) || !empty( $this->meta_query->queries ) ) { 2256 $groupby = "{$wpdb->posts}.ID"; 2236 2257 } 2237 2258 … … 2292 2313 // Order by 2293 2314 if ( empty($q['orderby']) ) { 2294 $ q['orderby']= "$wpdb->posts.post_date " . $q['order'];2315 $orderby = "$wpdb->posts.post_date " . $q['order']; 2295 2316 } elseif ( 'none' == $q['orderby'] ) { 2296 $ q['orderby']= '';2317 $orderby = ''; 2297 2318 } else { 2298 2319 // Used to filter values … … 2305 2326 $q['orderby'] = urldecode($q['orderby']); 2306 2327 $q['orderby'] = addslashes_gpc($q['orderby']); 2307 $orderby_array = explode(' ', $q['orderby']); 2308 $q['orderby'] = ''; 2309 2310 foreach ( $orderby_array as $i => $orderby ) { 2328 2329 $orderby_array = array(); 2330 foreach ( explode( ' ', $q['orderby'] ) as $i => $orderby ) { 2311 2331 // Only allow certain values for safety 2312 2332 if ( ! in_array($orderby, $allowed_keys) ) … … 2336 2356 } 2337 2357 2338 $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby; 2339 } 2340 2341 // append ASC or DESC at the end 2342 if ( !empty($q['orderby'])) 2343 $q['orderby'] .= " {$q['order']}"; 2344 2345 if ( empty($q['orderby']) ) 2346 $q['orderby'] = "$wpdb->posts.post_date ".$q['order']; 2358 $orderby_array[] = $orderby; 2359 } 2360 $orderby = implode( ',', $orderby_array ); 2361 2362 if ( empty( $orderby ) ) 2363 $orderby = "$wpdb->posts.post_date ".$q['order']; 2364 else 2365 $orderby .= " {$q['order']}"; 2347 2366 } 2348 2367 … … 2467 2486 } 2468 2487 2469 // Parse the meta query again if query vars have changed. 2470 if ( $this->query_vars_changed ) { 2471 $meta_query_hash = md5( serialize( $q['meta_query'] ) ); 2472 $_meta_query = $q['meta_query']; 2473 unset( $q['meta_query'] ); 2474 _parse_meta_query( $q ); 2475 if ( md5( serialize( $q['meta_query'] ) ) != $meta_query_hash && is_array( $_meta_query ) ) 2476 $q['meta_query'] = array_merge( $_meta_query, $q['meta_query'] ); 2477 } 2478 2479 if ( !empty( $q['meta_query'] ) ) { 2480 $clauses = call_user_func_array( '_get_meta_sql', array( $q['meta_query'], 'post', $wpdb->posts, 'ID', &$this) ); 2488 if ( !empty( $this->meta_query->queries ) ) { 2489 $clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this ); 2481 2490 $join .= $clauses['join']; 2482 2491 $where .= $clauses['where']; 2483 }2484 2485 if ( ! empty( $this->tax_query->queries ) || ! empty( $q['meta_query'] ) ) {2486 $groupby = "{$wpdb->posts}.ID";2487 2492 } 2488 2493 … … 2548 2553 $where = "AND 0"; 2549 2554 } 2550 2551 $orderby = $q['orderby'];2552 2555 2553 2556 $pieces = array( 'where', 'groupby', 'join', 'orderby', 'distinct', 'fields', 'limits' ); … … 2974 2977 2975 2978 /** 2976 * PHP4 type constructor.2979 * Constructor. 2977 2980 * 2978 2981 * Sets up the WordPress query, if parameter is not empty. … … 2984 2987 * @return WP_Query 2985 2988 */ 2986 function WP_Query($query = '') {2989 function __construct($query = '') { 2987 2990 if ( ! empty($query) ) { 2988 2991 $this->query($query); … … 3491 3494 $post_type = 'post'; 3492 3495 3496 if ( is_array( $post_type ) ) { 3497 if ( count( $post_type ) > 1 ) 3498 return; 3499 $post_type = array_shift( $post_type ); 3500 } 3501 3493 3502 // Do not attempt redirect for hierarchical post types 3494 3503 if ( is_post_type_hierarchical( $post_type ) ) … … 3516 3525 return; 3517 3526 3518 wp_redirect( $link, '301'); // Permanent redirect3527 wp_redirect( $link, 301 ); // Permanent redirect 3519 3528 exit; 3520 3529 endif;
Note: See TracChangeset
for help on using the changeset viewer.