Faster page_rows() from hailin. see #5303

git-svn-id: https://develop.svn.wordpress.org/trunk@6380 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren
2007-12-14 06:20:42 +00:00
parent fc087d1fb6
commit 1fdcc63822
3 changed files with 79 additions and 27 deletions

View File

@@ -1113,7 +1113,7 @@ class WP_Query {
$q['orderby'] = 'post_date '.$q['order'];
} else {
// Used to filter values
$allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order');
$allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order', 'parent', 'ID');
$q['orderby'] = urldecode($q['orderby']);
$q['orderby'] = addslashes_gpc($q['orderby']);
$orderby_array = explode(' ',$q['orderby']);
@@ -1123,11 +1123,16 @@ class WP_Query {
for ($i = 0; $i < count($orderby_array); $i++) {
// Only allow certain values for safety
$orderby = $orderby_array[$i];
if ( 'menu_order' != $orderby )
if ( !('menu_order' == $orderby || 'ID' == $orderby ))
$orderby = 'post_' . $orderby;
if ( in_array($orderby_array[$i], $allowed_keys) )
$q['orderby'] .= (($i == 0) ? '' : ',') . "$orderby {$q['order']}";
$q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
}
/* append ASC or DESC at the end */
if ( !empty($q['orderby'])){
$q['orderby'] .= " {$q['order']}";
}
if ( empty($q['orderby']) )
$q['orderby'] = 'post_date '.$q['order'];
}