rel_canonical() WP 2.9.0

Виводить тег <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();

Приклади

0

#1 Виведемо в head частину канонічне посилання

Додамо наступний код header.php в head частину документа, щоб на всіх is_single() сторінках вивести канонічне посилання:

<?php rel_canonical(); ?>

// виведе: <link rel='canonical' href='$link' />n
0

#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.0Adjusted to use wp_get_canonical_url() .

Код 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";
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *