Make WordPress Core

Ticket #28007: 28007.diff

File 28007.diff, 2.0 KB (added by wonderboymusic, 8 years ago)
  • src/wp-includes/query.php

     
    27672767                        $r_status = array();
    27682768                        $p_status = array();
    27692769                        $e_status = array();
    2770                         if ( in_array('any', $q_status) ) {
    2771                                 foreach ( get_post_stati( array('exclude_from_search' => true) ) as $status )
    2772                                         $e_status[] = "$wpdb->posts.post_status <> '$status'";
     2770                        if ( in_array( 'any', $q_status ) ) {
     2771                                foreach ( get_post_stati( array( 'exclude_from_search' => true ) ) as $status ) {
     2772                                        if ( ! in_array( $status, $q_status ) ) {
     2773                                                $e_status[] = "$wpdb->posts.post_status <> '$status'";
     2774                                        }
     2775                                }
    27732776                        } else {
    27742777                                foreach ( get_post_stati() as $status ) {
    27752778                                        if ( in_array( $status, $q_status ) ) {
  • tests/phpunit/tests/post/query.php

     
    740740                ) );
    741741                $this->assertEqualSets( $ordered, wp_list_pluck( $attached->posts, 'ID' ) );
    742742        }
     743
     744        function test_post_status() {
     745                $statuses1 = get_post_stati();
     746                $this->assertContains( 'auto-draft', $statuses1 );
     747
     748                $statuses2 = get_post_stati( array( 'exclude_from_search' => true ) );
     749                $this->assertContains( 'auto-draft', $statuses2 );
     750
     751                $statuses3 = get_post_stati( array( 'exclude_from_search' => false ) );
     752                $this->assertNotContains( 'auto-draft', $statuses3 );
     753
     754                $q1 = new WP_Query( array( 'post_status' => 'any' ) );
     755                $this->assertContains( "post_status <> 'auto-draft'", $q1->request );
     756
     757                $q2 = new WP_Query( array( 'post_status' => 'any, auto-draft' ) );
     758                $this->assertNotContains( "post_status <> 'auto-draft'", $q2->request );
     759
     760                $q3 = new WP_Query( array( 'post_status' => array( 'any', 'auto-draft' ) ) );
     761                $this->assertNotContains( "post_status <> 'auto-draft'", $q3->request );
     762        }
    743763}
     764 No newline at end of file