WordPress.org

Make WordPress Core

Ticket #22556: 22556.diff

File 22556.diff, 2.8 KB (added by wonderboymusic, 5 years 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 ) ) {