WordPress.org

Make WordPress Core

Ticket #16644: 16644.3.diff

File 16644.3.diff, 1.6 KB (added by greuben, 7 years ago)
  • wp-includes/taxonomy.php

     
    28422842        $t = get_taxonomy($taxonomy);
    28432843
    28442844        if ( empty($termlink) ) {
    2845                 if ( $t->query_var )
     2845                if( 'category' == $taxonomy )
     2846                        $termlink = '?cat=' . $term->term_id;
     2847                else if ( $t->query_var )
    28462848                        $termlink = "?$t->query_var=$slug";
    28472849                else
    28482850                        $termlink = "?taxonomy=$taxonomy&term=$slug";
  • 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() ) {