WordPress.org

Make WordPress Core

Ticket #16644: 16644.diff

File 16644.diff, 1.3 KB (added by greuben, 7 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() ) {