WordPress.org

Make WordPress Core

Ticket #16644: 16644.diff

File 16644.diff, 1.3 KB (added by greuben, 5 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() && ! $wp_rewrite->using_permalinks() ) { 
     83                if( isset( $_GET['cat'] ) ) { 
     84                        $categories = explode( ',', $_GET['cat'] ); 
     85                        if( count( $categories ) == 1 ) { 
     86                                if( $redirect_url = get_category_link( $_GET['cat'] ) ) 
     87                                        $redirect['query'] = remove_query_arg( array('cat', 'category', 'category_name'), $redirect['query'] ); 
     88                        } else { 
     89                                $category_ids = array_map( 'intval', $categories ); 
     90                                $category_ids = implode( ',', $category_ids ); 
     91                                $category_slugs = $wpdb->get_col( "SELECT t.slug FROM $wpdb->terms as t JOIN $wpdb->term_taxonomy as tt ON(t.term_id=tt.term_taxonomy_id) WHERE t.term_id IN($category_ids) AND tt.taxonomy='category'" ); 
     92                                $redirect_url = home_url('/'); 
     93                                $redirect_url = add_query_arg( array( 'category_name' => implode( ',', $category_slugs ) ), $redirect_url ); 
     94                                $redirect['query'] = remove_query_arg( array( 'cat', 'category', 'category_name' ), $redirect['query'] ); 
     95                        } 
     96                } 
     97        } 
    8198 
    8299        // These tests give us a WP-generated permalink 
    83100        if ( is_404() ) {