WordPress.org

Make WordPress Core

Ticket #16824: 16824.diff

File 16824.diff, 1.5 KB (added by dd32, 4 years ago)
  • wp-includes/query.php

     
    16251625                                $qv['post_type'] = sanitize_key($qv['post_type']); 
    16261626                } 
    16271627 
    1628                 if ( !empty($qv['post_status']) ) 
    1629                         $qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']); 
     1628                if ( ! empty( $qv['post_status'] ) ) { 
     1629                        if ( is_array( $qv['post_status'] ) ) 
     1630                                $qv['post_status'] = array_map('sanitize_key', $qv['post_status']); 
     1631                        else 
     1632                                $qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']); 
     1633                } 
    16301634 
    16311635                if ( $this->is_posts_page && ( ! isset($qv['withcomments']) || ! $qv['withcomments'] ) ) 
    16321636                        $this->is_comment_feed = false; 
     
    23872391                        $read_private_cap = 'read_private_' . $post_type_cap . 's'; 
    23882392                } 
    23892393 
    2390                 if ( isset($q['post_status']) && '' != $q['post_status'] ) { 
     2394                if ( ! empty( $q['post_status'] ) ) { 
    23912395                        $statuswheres = array(); 
    2392                         $q_status = explode(',', $q['post_status']); 
     2396                        $q_status = $q['post_status']; 
     2397                        if ( ! is_array( $q_status ) ) 
     2398                                $q_status = preg_split('|[,\s]+|', $q_status); 
    23932399                        $r_status = array(); 
    23942400                        $p_status = array(); 
    23952401                        $e_status = array(); 
    2396                         if ( $q['post_status'] == 'any' ) { 
     2402                        if ( in_array('any', $q_status) ) { 
    23972403                                foreach ( get_post_stati( array('exclude_from_search' => true) ) as $status ) 
    23982404                                        $e_status[] = "$wpdb->posts.post_status <> '$status'"; 
    23992405                        } else {