Make WordPress Core

Ticket #18616: query.diff

File query.diff, 1.7 KB (added by justindgivens, 12 years ago)
  • query.php

     
    23232323                                $allowed_keys[] = 'meta_value';
    23242324                                $allowed_keys[] = 'meta_value_num';
    23252325                        }
     2326                        if ( !empty($q['tax_name']) ) {
     2327                                $allowed_keys[] = $q['tax_name'];
     2328                                $allowed_keys[] = 'tax';
     2329                        }
    23262330                        $q['orderby'] = urldecode($q['orderby']);
    23272331                        $q['orderby'] = addslashes_gpc($q['orderby']);
    23282332
     
    23512355                                        case 'comment_count':
    23522356                                                $orderby = "$wpdb->posts.comment_count";
    23532357                                                break;
     2358                                        case $q['tax_name']:
     2359                                        case 'tax':
     2360                                                $orderby = "$wpdb->terms.name";
     2361                                                break;
    23542362                                        default:
    23552363                                                $orderby = "$wpdb->posts.post_" . $orderby;
    23562364                                }
     
    23642372                        else
    23652373                                $orderby .= " {$q['order']}";
    23662374                }
    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               
    23682391                if ( is_array( $post_type ) ) {
    23692392                        $post_type_cap = 'multiple_post_type';
    23702393                } else {