WordPress.org

Make WordPress Core

Ticket #10649: query.php.3.diff

File query.php.3.diff, 1.6 KB (added by scribu, 11 years ago)

remove_redundant check, use foreach instead of for

  • wp-includes/query.php

     
    20212021                        if ( !empty($q['meta_key']) ) {
    20222022                                $allowed_keys[] = $q['meta_key'];
    20232023                                $allowed_keys[] = 'meta_value';
     2024                                $allowed_keys[] = 'meta_value_num';
    20242025                        }
    20252026                        $q['orderby'] = urldecode($q['orderby']);
    20262027                        $q['orderby'] = addslashes_gpc($q['orderby']);
    2027                         $orderby_array = explode(' ',$q['orderby']);
    2028                         if ( empty($orderby_array) )
    2029                                 $orderby_array[] = $q['orderby'];
     2028                        $orderby_array = explode(' ', $q['orderby']);
    20302029                        $q['orderby'] = '';
    2031                         for ($i = 0; $i < count($orderby_array); $i++) {
     2030
     2031                        foreach ( $orderby_array as $i => $orderby ) {
    20322032                                // Only allow certain values for safety
    2033                                 $orderby = $orderby_array[$i];
     2033                                if ( ! in_array($orderby, $allowed_keys) )
     2034                                        continue;
     2035
    20342036                                switch ($orderby) {
    20352037                                        case 'menu_order':
    20362038                                                break;
     
    20442046                                        case 'meta_value':
    20452047                                                $orderby = "$wpdb->postmeta.meta_value";
    20462048                                                break;
     2049                                        case 'meta_value_num':
     2050                                                $orderby = "$wpdb->postmeta.meta_value+0";
     2051                                                break;
    20472052                                        case 'comment_count':
    20482053                                                $orderby = "$wpdb->posts.comment_count";
    20492054                                                break;
    20502055                                        default:
    20512056                                                $orderby = "$wpdb->posts.post_" . $orderby;
    20522057                                }
    2053                                 if ( in_array($orderby_array[$i], $allowed_keys) )
    2054                                         $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
     2058
     2059                                $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
    20552060                        }
     2061
    20562062                        // append ASC or DESC at the end
    20572063                        if ( !empty($q['orderby']))
    20582064                                $q['orderby'] .= " {$q['order']}";