WordPress.org

Make WordPress Core

Ticket #17592: 17592.diff

File 17592.diff, 1.4 KB (added by kawauso, 4 years ago)

Apply exclude_from_search only when is_search() for post_type & post_status

  • wp-includes/query.php

     
    23742374                } 
    23752375 
    23762376                $exclude_post_types = ''; 
    2377                 $in_search_post_types = get_post_types( array('exclude_from_search' => false) ); 
    2378                 if ( ! empty( $in_search_post_types ) ) 
    2379                         $exclude_post_types .= $wpdb->prepare(" AND $wpdb->posts.post_type IN ('" . join("', '", $in_search_post_types ) . "')"); 
    23802377 
     2378                if ( $this->is_search() ) { 
     2379                        $in_search_post_types = get_post_types( array('exclude_from_search' => false) ); 
     2380                        if ( ! empty( $in_search_post_types ) ) 
     2381                                $exclude_post_types .= $wpdb->prepare(" AND $wpdb->posts.post_type IN ('" . join("', '", $in_search_post_types ) . "')"); 
     2382                } 
     2383 
    23812384                if ( 'any' == $post_type ) { 
    23822385                        $where .= $exclude_post_types; 
    23832386                } elseif ( !empty( $post_type ) && is_array( $post_type ) ) { 
     
    24172420                        $p_status = array(); 
    24182421                        $e_status = array(); 
    24192422                        if ( in_array('any', $q_status) ) { 
    2420                                 foreach ( get_post_stati( array('exclude_from_search' => true) ) as $status ) 
    2421                                         $e_status[] = "$wpdb->posts.post_status <> '$status'"; 
     2423                                if ( $this->is_search() ) { 
     2424                                        foreach ( get_post_stati( array('exclude_from_search' => true) ) as $status ) 
     2425                                                $e_status[] = "$wpdb->posts.post_status <> '$status'"; 
     2426                                } 
    24222427                        } else { 
    24232428                                foreach ( get_post_stati() as $status ) { 
    24242429                                        if ( in_array( $status, $q_status ) ) {