WordPress – Канонические страницы без плагина (rel=canonical)

Логотип Wordpress

Добавляем функционал канонических страниц (атрибут rel=canonical) в WordPress без плагинов.

В functions.php необходимо добавить код:

remove_action('wp_head', 'rel_canonical');
function wp_canonical(){
if ( !is_singular() )
        return;
    global $wp_the_query;
    if ( !$id = $wp_the_query->get_queried_object_id() )
        return;
    $link = get_permalink( $id );
    if ( $page = get_query_var('cpage') )
        $link = get_comments_pagenum_link( $page );
    echo "\n";
}
add_action('wp_head', 'wp_canonical',3);
function wp_canonical_page(){
        if (is_home() ) {
            $chief_link = get_option('home');
            $home_link = link_paged($chief_link);
            {
        echo "".''."\n";
    }
} else if (is_category()) {
            $cat_link = get_category_link(get_query_var('cat'));
            $category_link = link_paged($cat_link);
            {
        echo "".''."\n";
    }
} else if (function_exists('is_tag') && is_tag()){
            $tag = get_term_by('slug',get_query_var('tag'),'post_tag');
        if (!empty($tag->term_id)) {
            $tag_link = get_tag_link($tag->term_id);
            }
            $tag_link = link_paged($tag_link);
            $tag_link = trailingslashit($tag_link);
           {
        echo "".''."\n";
    }
} else if (is_author()){
            global $cache_userdata;
            $userid = get_query_var('author');
            $auth_link = get_author_posts_url ( 'ID' );
        $author_link = link_paged($auth_link);
        {
        echo "".''."\n";
    }
}
else if (is_date()){
if (get_query_var('m')) {
                $m = preg_replace('/[^0-9]/', '', get_query_var('m'));
                switch (strlen($m)) {
                    case 0:
                        $date_link = get_year_link($m);
                        $date_link = link_paged( $date_link );
                        break;
                    case 1:
                        $date_link = get_month_link(substr($m, 0, 4), substr($m, 4, 2));
                        $date_link = link_paged( $date_link );
                        break;
                    case 2:
                        $date_link = get_day_link( substr($m, 0, 4), substr($m, 4, 2), substr($m, 6, 2));
                        $date_link = link_paged( $date_link );                    
                        break;
                    default:
                        $date_link = '';
                }
                }
                if (is_day()) {
                $date_link = get_day_link(get_query_var('year'),  get_query_var('monthnum'), get_query_var('day'));
                $date_link = link_paged($date_link);                  
            } else if (is_month()) {
                $date_link = get_month_link(get_query_var('year'), get_query_var('monthnum'));
                $date_link = link_paged($date_link);                    
            } else if (is_year()) {
                $date_link = get_year_link(get_query_var('year'));
                $date_link = link_paged($date_link);
            }
        {
        echo "".''."\n";
        }
    }
}
function link_paged($link) {
            $page = get_query_var('paged');
            $check = function_exists('user_trailingslashit');
        if ($page && $page > 1) {
            $link = trailingslashit($link);
            if ($check) {
                $link = user_trailingslashit($link, 'paged');
            } else {
                $link .= '/';
            }
        }
            return $link;
    }
add_action('wp_head', 'wp_canonical_page');
(У этой записи еще нет рейтинга. Поставьте первую оценку)