WordPress.org

Make WordPress Core

Ticket #16844: 16844.diff

File 16844.diff, 1.9 KB (added by scribu, 7 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