WordPress.org

Make WordPress Core

Ticket #9979: 9979.diff

File 9979.diff, 1.3 KB (added by interconnectit, 9 years ago)

Patch for query.php to add multiple orders when using many orderby statments

  • query.php

     
    22862286
    22872287                $where .= $search . $whichauthor . $whichmimetype;
    22882288
    2289                 if ( empty($q['order']) || ((strtoupper($q['order']) != 'ASC') && (strtoupper($q['order']) != 'DESC')) )
    2290                         $q['order'] = 'DESC';
     2289                if ( empty($q['order']) ) {
     2290                        $order_array[0] = $q['order'] = 'DESC';
     2291                } else {
     2292                        $order_array = explode(' ', $q['order'] );
     2293                        foreach( $order_array as $i => $order ) {
     2294                                $order_array[ $i ] = strtoupper( $order ) != 'ASC' && strtoupper( $order ) != 'DESC' ? 'DESC' : strtoupper( $order );
     2295                        }
     2296                        $q['order'] = $order_array[ 0 ]; // Set order to the first item for backward compat
     2297                }
    22912298
    22922299                // Order by
    22932300                if ( empty($q['orderby']) ) {
     
    23352342                                                $orderby = "$wpdb->posts.post_" . $orderby;
    23362343                                }
    23372344
    2338                                 $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
     2345                                $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby . ' ' . $order_array[ ( $i % count( $order_array ) ) ];
    23392346                        }
    23402347
    2341                         // append ASC or DESC at the end
    2342                         if ( !empty($q['orderby']))
    2343                                 $q['orderby'] .= " {$q['order']}";
    2344 
    23452348                        if ( empty($q['orderby']) )
    23462349                                $q['orderby'] = "$wpdb->posts.post_date ".$q['order'];
    23472350                }