WordPress.org

Make WordPress Core

Ticket #22556: 22556.diff

File 22556.diff, 2.8 KB (added by wonderboymusic, 19 months ago)
  • wp-includes/query.php

    diff --git wp-includes/query.php wp-includes/query.php
    index 04286aa..5fed6ee 100644
    class WP_Query { 
    25002500                        } 
    25012501                        foreach ( $statuswheres as $statuswhere ) 
    25022502                                $where .= " AND $statuswhere"; 
    2503                 } elseif ( !$this->is_singular ) { 
    2504                         $where .= " AND ($wpdb->posts.post_status = 'publish'"; 
    2505  
    2506                         // Add public states. 
    2507                         $public_states = get_post_stati( array('public' => true) ); 
    2508                         foreach ( (array) $public_states as $state ) { 
    2509                                 if ( 'publish' == $state ) // Publish is hard-coded above. 
    2510                                         continue; 
    2511                                 $where .= " OR $wpdb->posts.post_status = '$state'"; 
    2512                         } 
     2503                } elseif ( ! $this->is_singular ) { 
     2504                        if ( in_array( 'attachment', (array) $post_type ) ) { 
     2505                                $where .= " AND ($wpdb->posts.post_status = 'inherit')"; 
     2506                        } else { 
     2507                                $where .= " AND ($wpdb->posts.post_status = 'publish'"; 
    25132508 
    2514                         if ( $this->is_admin ) { 
    2515                                 // Add protected states that should show in the admin all list. 
    2516                                 $admin_all_states = get_post_stati( array('protected' => true, 'show_in_admin_all_list' => true) ); 
    2517                                 foreach ( (array) $admin_all_states as $state ) 
     2509                                // Add public states. 
     2510                                $public_states = get_post_stati( array( 'public' => true ) ); 
     2511                                foreach ( (array) $public_states as $state ) { 
     2512                                        if ( 'publish' == $state ) // Publish is hard-coded above. 
     2513                                                continue; 
    25182514                                        $where .= " OR $wpdb->posts.post_status = '$state'"; 
    2519                         } 
     2515                                } 
    25202516 
    2521                         if ( is_user_logged_in() ) { 
    2522                                 // Add private states that are limited to viewing by the author of a post or someone who has caps to read private states. 
    2523                                 $private_states = get_post_stati( array('private' => true) ); 
    2524                                 foreach ( (array) $private_states as $state ) 
    2525                                         $where .= current_user_can( $read_private_cap ) ? " OR $wpdb->posts.post_status = '$state'" : " OR $wpdb->posts.post_author = $user_ID AND $wpdb->posts.post_status = '$state'"; 
    2526                         } 
     2517                                if ( $this->is_admin ) { 
     2518                                        // Add protected states that should show in the admin all list. 
     2519                                        $admin_all_states = get_post_stati( array( 'protected' => true, 'show_in_admin_all_list' => true ) ); 
     2520                                        foreach ( (array) $admin_all_states as $state ) 
     2521                                                $where .= " OR $wpdb->posts.post_status = '$state'"; 
     2522                                } 
    25272523 
    2528                         $where .= ')'; 
     2524                                if ( is_user_logged_in() ) { 
     2525                                        // Add private states that are limited to viewing by the author of a post or someone who has caps to read private states. 
     2526                                        $private_states = get_post_stati( array( 'private' => true ) ); 
     2527                                        foreach ( (array) $private_states as $state ) 
     2528                                                $where .= current_user_can( $read_private_cap ) ? " OR $wpdb->posts.post_status = '$state'" : " OR $wpdb->posts.post_author = $user_ID AND $wpdb->posts.post_status = '$state'"; 
     2529                                } 
     2530 
     2531                                $where .= ')'; 
     2532                        } 
    25292533                } 
    25302534 
    25312535                if ( !empty( $this->meta_query->queries ) ) {