WordPress.org

Make WordPress Core

Ticket #16844: 16844.diff

File 16844.diff, 1.9 KB (added by scribu, 3 years ago)
  • wp-includes/query.php

     
    22712271 
    22722272                // Order by 
    22732273                if ( empty($q['orderby']) ) { 
    2274                         $q['orderby'] = "$wpdb->posts.post_date " . $q['order']; 
     2274                        $orderby = "$wpdb->posts.post_date " . $q['order']; 
    22752275                } elseif ( 'none' == $q['orderby'] ) { 
    2276                         $q['orderby'] = ''; 
     2276                        $orderby = ''; 
    22772277                } else { 
    22782278                        // Used to filter values 
    22792279                        $allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count'); 
     
    22842284                        } 
    22852285                        $q['orderby'] = urldecode($q['orderby']); 
    22862286                        $q['orderby'] = addslashes_gpc($q['orderby']); 
    2287                         $orderby_array = explode(' ', $q['orderby']); 
    2288                         $q['orderby'] = ''; 
    22892287 
    2290                         foreach ( $orderby_array as $i => $orderby ) { 
     2288                        $orderby_array = array(); 
     2289                        foreach ( explode( ' ', $q['orderby'] ) as $i => $orderby ) { 
    22912290                                // Only allow certain values for safety 
    22922291                                if ( ! in_array($orderby, $allowed_keys) ) 
    22932292                                        continue; 
     
    23152314                                                $orderby = "$wpdb->posts.post_" . $orderby; 
    23162315                                } 
    23172316 
    2318                                 $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby; 
     2317                                $orderby_array[] = $orderby; 
    23192318                        } 
     2319                        $orderby = implode( ',', $orderby_array ); 
    23202320 
    2321                         // append ASC or DESC at the end 
    2322                         if ( !empty($q['orderby'])) 
    2323                                 $q['orderby'] .= " {$q['order']}"; 
    2324  
    2325                         if ( empty($q['orderby']) ) 
    2326                                 $q['orderby'] = "$wpdb->posts.post_date ".$q['order']; 
     2321                        if ( empty( $orderby ) ) 
     2322                                $orderby = "$wpdb->posts.post_date ".$q['order']; 
     2323                        else 
     2324                                $orderby .= " {$q['order']}"; 
    23272325                } 
    23282326 
    23292327                if ( is_array( $post_type ) ) { 
     
    25122510                                $where = "AND 0"; 
    25132511                } 
    25142512 
    2515                 $orderby = $q['orderby']; 
    2516  
    25172513                $pieces = array( 'where', 'groupby', 'join', 'orderby', 'distinct', 'fields', 'limits' ); 
    25182514 
    25192515                // Apply post-paging filters on where and join.  Only plugins that