rel_canonical()
Выводит тег <link rel=canonical> на экран. Автоматически вызывается во время события wp_head, чтобы вывести каноническую ссылку в head документа.
Работает только для страниц типа is_singular().
Чтобы отключить каноническую ссылку в head части, нужно удалить хук:
remove_action( 'wp_head', 'rel_canonical' );
Метатег сanonical
поисковыми системами только в одном случае: когда поисковая система, обнаружила дублирующий контент, и при этом у нее нет достаточных своих оснований для выбора каноничного адреса.
Во всех прочих случаях, canonical игнорируется. То есть прописывать на страницах пагинации каноникал на любую другую страницу кроме самой себя - не имеет никакого смысла, так как страница пагинации не является дублирующим контентом. За исключением, конечно, случаев, когда на ней действительно один и тот же контент. Правда не представляю как это можно было бы в трезвом уме сделать.
Хуков нет.
Возвращает
null
. Выводит на экран html тег <link rel='canonical' href='$link' />
Использование
rel_canonical();
Примеры
#1 Выведем в head часть каноническую ссылку
Добавим следующий код в header.php в head часть документа, чтобы на всех is_single() страницах вывести каноническую ссылку:
<?php rel_canonical(); ?> // выведет: <link rel='canonical' href='$link' />\n
#2 Удаление канонических ссылок на страницах пагинации комментариев
На страницах пагинации комментариев канонический URL выглядит так: сайт.ru/about/comment-page-1/
. Это не всегда хорошо, вроде бы, потому что контент записи в этом случае дублируется.
Чтобы это исправить используем такой код:
add_filter( 'get_canonical_url', 'remove_comment_page_canonical_url', 10, 2 ); function remove_comment_page_canonical_url( $canonical_url, $post ){ // for comment page of current post only if ( get_query_var( 'cpage', 0 ) && $post->ID === get_queried_object_id() ) { $canonical_url = get_permalink( $post ); } return $canonical_url; }
Подробно об этом коде я ответил в вопросе.
Список изменений
С версии 2.9.0 | Введена. |
С версии 4.6.0 | Adjusted to use wp_get_canonical_url(). |
Код rel_canonical() rel canonical WP 6.7.1
function rel_canonical() { if ( ! is_singular() ) { return; } $id = get_queried_object_id(); if ( 0 === $id ) { return; } $url = wp_get_canonical_url( $id ); if ( ! empty( $url ) ) { echo '<link rel="canonical" href="' . esc_url( $url ) . '" />' . "\n"; } }