WordPress.org

Make WordPress Core

Ticket #17592: 17592.diff

File 17592.diff, 1.4 KB (added by kawauso, 7 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 ) ) {