Make WordPress Core

Changeset 18047


Ignore:
Timestamp:
05/25/2011 08:00:56 PM (13 years ago)
Author:
ryan
Message:

Allow WP_Query 'post_status' parameter to accept an array, as well as a singular value and comma separated list. Fixes #16824

Location:
branches/3.1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/3.1

  • branches/3.1/wp-includes/query.php

    r17805 r18047  
    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'] ) )
     
    23862390        }
    23872391
    2388         if ( isset($q['post_status']) && '' != $q['post_status'] ) {
     2392        if ( ! empty( $q['post_status'] ) ) {
    23892393            $statuswheres = array();
    2390             $q_status = explode(',', $q['post_status']);
     2394            $q_status = $q['post_status'];
     2395            if ( ! is_array( $q_status ) )
     2396                $q_status = explode(',', $q_status);
    23912397            $r_status = array();
    23922398            $p_status = array();
    23932399            $e_status = array();
    2394             if ( $q['post_status'] == 'any' ) {
     2400            if ( in_array('any', $q_status) ) {
    23952401                foreach ( get_post_stati( array('exclude_from_search' => true) ) as $status )
    23962402                    $e_status[] = "$wpdb->posts.post_status <> '$status'";
Note: See TracChangeset for help on using the changeset viewer.