WordPress.org

Make WordPress Core

Ticket #18660: canonical.4.patch

File canonical.4.patch, 2.3 KB (added by joostdevalk, 3 years ago)

Canonical Patch v4

  • wp-includes/link-template.php

     
    23552355} 
    23562356 
    23572357/** 
    2358  * Output rel=canonical for singular queries 
     2358 * Output rel=canonical 
    23592359 * 
    23602360 * @package WordPress 
    23612361 * @since 2.9.0 
    23622362*/ 
    23632363function rel_canonical() { 
    2364         if ( !is_singular() ) 
    2365                 return; 
     2364        $link = false; 
     2365         
     2366        if ( is_singular() ) { 
     2367                $link = get_permalink( get_queried_object() ); 
     2368                if ( get_query_var('page') > 1 ) 
     2369                        $link = user_trailingslashit( trailingslashit( $link ) . get_query_var( 'page' ) ); 
     2370        } else { 
     2371                if ( is_front_page() ) { 
     2372                        $link = home_url( '/' ); 
     2373                } else if ( is_home() && "page" == get_option('show_on_front') ) { 
     2374                        $link = get_permalink( get_option( 'page_for_posts' ) ); 
     2375                } else if ( is_tax() || is_tag() || is_category() ) { 
     2376                        $term = get_queried_object(); 
     2377                        $link = get_term_link( $term, $term->taxonomy ); 
     2378                } else if ( is_post_type_archive() ) { 
     2379                        $link = get_post_type_archive_link( get_post_type() ); 
     2380                } else if ( is_author() ) { 
     2381                        $link = get_author_posts_url( get_query_var('author') ); 
     2382                } else if ( is_archive() ) { 
     2383                        if ( is_date() ) { 
     2384                                if ( is_day() ) { 
     2385                                        $link = get_day_link( get_query_var('year'), get_query_var('monthnum'), get_query_var('day') ); 
     2386                                } else if ( is_month() ) { 
     2387                                        $link = get_month_link( get_query_var('year'), get_query_var('monthnum') ); 
     2388                                } else if ( is_year() ) { 
     2389                                        $link = get_year_link( get_query_var('year') ); 
     2390                                }                                                
     2391                        } 
     2392                } 
     2393                 
     2394                if ( $link && get_query_var('paged') > 1 ) { 
     2395                        global $wp_rewrite; 
     2396                        if ( !$wp_rewrite->using_permalinks() ) { 
     2397                                $link = add_query_arg( 'paged', get_query_var('paged'), $link ); 
     2398                        } else { 
     2399                                $link = user_trailingslashit( trailingslashit( $link ) . trailingslashit( $wp_rewrite->pagination_base ) . get_query_var('paged') ); 
     2400                        } 
     2401                } 
     2402        } 
    23662403 
    2367         global $wp_the_query; 
    2368         if ( !$id = $wp_the_query->get_queried_object_id() ) 
    2369                 return; 
    2370  
    2371         $link = get_permalink( $id ); 
    2372         echo "<link rel='canonical' href='$link' />\n"; 
     2404        $link = apply_filters( 'rel_canonical', $link ); 
     2405         
     2406        if ( $link ) 
     2407                echo "<link rel='canonical' href='" . esc_attr( $link ) . "' />\n"; 
    23732408} 
    23742409 
    23752410/** 
     
    24852520        } 
    24862521} 
    24872522 
    2488 ?> 
     2523?> 
     2524 No newline at end of file