WordPress.org

Make WordPress Core

Ticket #4617: 4617.diff

File 4617.diff, 1.1 KB (added by Nazgul, 11 years ago)
  • wp-includes/query.php

     
    972972                        $q['orderby'] = 'post_date '.$q['order'];
    973973                } else {
    974974                        // Used to filter values
    975                         $allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order');
     975                        $allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order', 'rand');
    976976                        $q['orderby'] = urldecode($q['orderby']);
    977977                        $q['orderby'] = addslashes_gpc($q['orderby']);
    978978                        $orderby_array = explode(' ',$q['orderby']);
     
    982982                        for ($i = 0; $i < count($orderby_array); $i++) {
    983983                                // Only allow certain values for safety
    984984                                $orderby = $orderby_array[$i];
    985                                 if ( 'menu_order' != $orderby )
     985                                if ( 'menu_order' != $orderby && 'rand' != $orderby)
    986986                                        $orderby = 'post_' . $orderby;
     987                                if ('rand' == $orderby)
     988                                        $orderby = 'RAND()';
    987989                                if ( in_array($orderby_array[$i], $allowed_keys) )
    988990                                        $q['orderby'] .= (($i == 0) ? '' : ',') . "$orderby {$q['order']}";
    989991                        }