WordPress.org

Make WordPress Core

Ticket #4617: rand.diff

File rand.diff, 1.2 KB (added by Otto42, 12 years ago)

Patch using switch/case for higher speed

  • wp-includes/query.php

     
    11501150                        $q['orderby'] = 'post_date '.$q['order'];
    11511151                } else {
    11521152                        // Used to filter values
    1153                         $allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order', 'parent', 'ID');
     1153                        $allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand');
    11541154                        $q['orderby'] = urldecode($q['orderby']);
    11551155                        $q['orderby'] = addslashes_gpc($q['orderby']);
    11561156                        $orderby_array = explode(' ',$q['orderby']);
     
    11601160                        for ($i = 0; $i < count($orderby_array); $i++) {
    11611161                                // Only allow certain values for safety
    11621162                                $orderby = $orderby_array[$i];
    1163                                 if ( !('menu_order' == $orderby || 'ID' == $orderby ))
    1164                                         $orderby = 'post_' . $orderby;
     1163                                switch ($orderby) {
     1164                                        case 'menu_order':
     1165                                        case 'ID':
     1166                                                break;
     1167                                        case 'rand':
     1168                                                $orderby = 'RAND()';
     1169                                                break;
     1170                                        default:
     1171                                                $orderby = 'post_' . $orderby;
     1172                                }
    11651173                                if ( in_array($orderby_array[$i], $allowed_keys) )
    11661174                                        $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
    11671175                        }