Make WordPress Core

Ticket #38034: class-wp-query.diff

File class-wp-query.diff, 1.5 KB (added by kelvink, 8 years ago)
  • src/wp-includes/class-wp-query.php

     
    14941494                $allowed_keys = array(
    14951495                        'post_name', 'post_author', 'post_date', 'post_title', 'post_modified',
    14961496                        'post_parent', 'post_type', 'name', 'author', 'date', 'title', 'modified',
    1497                         'parent', 'type', 'ID', 'menu_order', 'comment_count', 'rand',
     1497                        'parent', 'type', 'ID', 'menu_order', 'comment_count', 'rand', 'post__in',
    14981498                );
    14991499
    15001500                $primary_meta_key = '';
     
    15521552                        case 'meta_value_num':
    15531553                                $orderby_clause = "{$primary_meta_query['alias']}.meta_value+0";
    15541554                                break;
     1555                        case 'post__in':
     1556                                if( !empty( $this->query_vars['post__in'] ) ) {
     1557                                        $orderby_clause = "FIELD({$this->db->posts}.ID," . implode( ',', array_map( 'absint', $this->query_vars['post__in'] ) ) . ")";
     1558                                }
     1559                                break;
    15551560                        default:
    15561561                                if ( array_key_exists( $orderby, $meta_clauses ) ) {
    15571562                                        // $orderby corresponds to a meta_query clause.
     
    21432148                        }
    21442149                } elseif ( 'none' == $q['orderby'] ) {
    21452150                        $orderby = '';
    2146                 } elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) {
    2147                         $orderby = "FIELD( {$this->db->posts}.ID, $post__in )";
    21482151                } elseif ( $q['orderby'] == 'post_parent__in' && ! empty( $post_parent__in ) ) {
    21492152                        $orderby = "FIELD( {$this->db->posts}.post_parent, $post_parent__in )";
    21502153                } elseif ( $q['orderby'] == 'post_name__in' && ! empty( $post_name__in ) ) {