Ticket #18616: query.diff

File query.diff, 1.7 KB (added by justindgivens, 21 months 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 {