WordPress.org

Make WordPress Core

Ticket #16728: 16728.diff

File 16728.diff, 1.1 KB (added by greuben, 3 years ago)
  • wp-includes/canonical.php

     
    7878                                $redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id', 'post_type'), $redirect['query']); 
    7979                } 
    8080        } 
     81            
     82        if( is_category() ) { 
     83                if( isset( $_GET['category_name'] ) ) { 
     84                        $categories = explode( ',', $_GET['category_name'] ); 
     85                        $categories = "'" . implode( "','", array_map( 'sanitize_title_for_query', $categories ) ) . "'"; 
     86                        $category_ids = $wpdb->get_col( "SELECT term_id FROM $wpdb->term_taxonomy INNER JOIN $wpdb->terms USING(term_id) WHERE taxonomy='category' AND slug IN($categories)" ); 
     87                        if( $category_ids ) { 
     88                                $redirect_url = home_url( '/' ); 
     89                                $redirect_url = add_query_arg( array( 'cat' => implode( ',', $category_ids ) ), $redirect_url ); 
     90                                $redirect['query'] = remove_query_arg( array( 'cat', 'category_name', 'category' ), $redirect['query'] ); 
     91                        } 
     92                } 
     93        } 
    8194 
    8295        // These tests give us a WP-generated permalink 
    8396        if ( is_404() ) {