rel_canonical()
Виводить тег <link rel=canonical> на екран. Автоматично викликається під час події wp_head , щоб вивести канонічне посилання в head документа.
Працює лише для сторінок типу is_singular() .
Щоб вимкнути канонічне посилання в head частини, потрібно видалити хук:
remove_action( 'wp_head', 'rel_canonical');
Метатег сanonicalвикористовується пошуковими системами тільки в одному випадку: коли пошукова система виявила дублюючий контент, і при цьому у неї не достатньо своїх підстав для вибору канонічної адреси. У всіх інших випадках canonical ігнорується.
wp_get_canonical_url()
Хуків немає.
Повертає
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.0.2
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";
}
}