WordPress.org

Make WordPress Core

Ticket #4617: 4617.diff

File 4617.diff, 1.1 KB (added by Nazgul, 7 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                        }