WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

rel_canonical() WP 2.9.0

Выводит тег link rel=canonical на экран. Автоматически используется во время события wp_head, чтобы вывести каноническую ссылку в head документа. Работает только для страниц типа is_singular().

Чтобы отключить эту ссылку в head части нужно удалить хук:

remove_action( "wp_head", "rel_canonical" );

Ссылка выводится в WordPress по умолчанию! С версии 2.3.

Работает на основе: wp_get_canonical_url()

Хуков нет.

Возвращает

Выводит на экран 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: wp-includes/link-template.php WP 5.2.3

<?php
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";
	}
}
3 коммента
  • Здравствуйте! Обновите пожалуйста код для комментариев "Удаление канонических ссылок на страницах пагинации комментариев", он перестал работать в версии 5.2. Канонические ссылки выводятся на страницах пагинации и имеют формат саму на себя. Т.е каноническая ссылка ведет на страницу пагинации.

    1
    Ответить4 мес назад #
  • @ altop

    Доброго времени суток,

    Спасибо за информацию о canonical, воспользовался.

    Но каким то странным образом к урлу добавляется пачка цифр и знаков после последнего слеша в каждом урле https://domen.com/?v=a36417306e45 вот так все выглядит.
    В исходнике canonical урл как надо, а в браузере с этими знаками.

    Возможно у вас был такой опыт и как вы решили. Спасибо

    Ответить11 дней назад #
Здравствуйте, !     Войти . Зарегистрироваться