Ticket #18616: query.diff
| File query.diff, 1.7 KB (added by , 14 years ago) |
|---|
-
query.php
2323 2323 $allowed_keys[] = 'meta_value'; 2324 2324 $allowed_keys[] = 'meta_value_num'; 2325 2325 } 2326 if ( !empty($q['tax_name']) ) { 2327 $allowed_keys[] = $q['tax_name']; 2328 $allowed_keys[] = 'tax'; 2329 } 2326 2330 $q['orderby'] = urldecode($q['orderby']); 2327 2331 $q['orderby'] = addslashes_gpc($q['orderby']); 2328 2332 … … 2351 2355 case 'comment_count': 2352 2356 $orderby = "$wpdb->posts.comment_count"; 2353 2357 break; 2358 case $q['tax_name']: 2359 case 'tax': 2360 $orderby = "$wpdb->terms.name"; 2361 break; 2354 2362 default: 2355 2363 $orderby = "$wpdb->posts.post_" . $orderby; 2356 2364 } … … 2364 2372 else 2365 2373 $orderby .= " {$q['order']}"; 2366 2374 } 2367 2375 2376 //Order by Tax Added in Join and Where clauses. 2377 if ( $q['orderby'] == 'tax' || !empty( $q['tax_name'] ) ) { 2378 $q['tax_name'] = urldecode($q['tax_name']); 2379 $q['tax_name'] = addslashes_gpc($q['tax_name']); 2380 if ( taxonomy_exists( $q['tax_name'] ) ) { 2381 $join .= " INNER JOIN $wpdb->term_relationships as taxSort ON ( $wpdb->posts.ID = taxSort.object_id ) "; 2382 $join .= " RIGHT JOIN $wpdb->term_taxonomy ON ( taxSort.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id ) "; 2383 $join .= " RIGHT JOIN $wpdb->terms ON ( $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id ) "; 2384 $where .= " AND $wpdb->term_taxonomy.taxonomy = '" . $q['tax_name'] . "' "; 2385 } else { 2386 //if the tax isn't valid, let reset the order by. 2387 $orderby = "$wpdb->posts.post_date ".$q['order']; 2388 } 2389 } 2390 2368 2391 if ( is_array( $post_type ) ) { 2369 2392 $post_type_cap = 'multiple_post_type'; 2370 2393 } else {