rel=canonical: как сделать канонический url самой записи на страницах пагинации комментариев?
Подскажи пожалуйста, хочу использовать пагинацию комментариев, но ссылки имеют вид сайт.ru/about/comment-page-1/#comments.
Как сделать, чтобы канонической на всех страницах пагинации комментариев была основная сайт.ru/about/, а не сайт.ru/about/comment-page-1/#comments?
Вариант для версии WP 4.6+ (обновлен 2019-08-10)
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; }Вариант для версии WP меньше 4.6
За вывод канонических ссылок в WordPress отвечает функция rel_canonical(). Подключается она через фильтр wp_head.
Так как функция не предоставляет никаких фильтров, чтобы изменить её поведение вам нужно удалить фильтр и добавить свой, при этом создав аналогичную функцию, копируем код функции и изменяем его:
remove_action( 'wp_head', 'rel_canonical'); add_action( 'wp_head', 'kama_rel_canonical'); function kama_rel_canonical(){ if ( ! is_singular() ) { return; } if ( ! $id = get_queried_object_id() ) { return; } $url = get_permalink( $id ); $page = get_query_var( 'page' ); if ( $page >= 2 ) { if ( '' == get_option( 'permalink_structure' ) ) { $url = add_query_arg( 'page', $page, $url ); } else { $url = trailingslashit( $url ) . user_trailingslashit( $page, 'single_paged' ); } } /* этот блок отвечает за пагинацию комментариев, поэтому его закроем $cpage = get_query_var( 'cpage' ); if ( $cpage ) { $url = get_comments_pagenum_link( $cpage ); } */ echo '<link rel="canonical" href="' . esc_url( $url ) . "\" />\n"; }Добавьте код в functions.php и Все готово!
Теперь любая страница комментариев будет иметь в канонической ссылке основной URL записи.
Спасибо тебе огромное, сколько не обращался к тебе за помощью, всегда получал положительный ответ. Удачи тебе и процветания твоему блогу!!!
Тимур, привет! Выручил, как раз сейчас этот код понадобился, а куда, как ни к тебе на wp-kama заглянуть; есть всё!
Скажите, а для страниц категорий товаров (Woocommerce) на Вордпресс можно настроить rel="canonical" так же для первой страницы?
Canonical используется поисковыми системами только в одном случае: когда поисковая система, обнаружила дублирующий контент, и при этом у нее нет достаточных своих оснований для выбора каноничного адреса.
Во всех прочих случаях, canonical игнорируется. То есть прописывать на страницах пагинации каноникал на любую другую страницу кроме самой себя - не имеет никакого смысла, так как страница пагинации не является дублирующим контентом. За исключением, конечно, случаев, когда на ней действительно один и тот же контент. Правда не представляю как это можно было бы в трезвом уме сделать.