WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Рекомендуемые продукты со скидкой от Template Monster

rel=canonical: как сделать канонический url самой записи на страницах пагинации комментариев?

Подскажи пожалуйста, хочу использовать пагинацию комментариев, но ссылки имеют вид сайт.ru/about/comment-page-1/#comments.

Как сделать, чтобы канонической на всех страницах пагинации комментариев была основная сайт.ru/about/, а не сайт.ru/about/comment-page-1/#comments?

0
Гость
3.6 года назад
  • 0
    Kama7611

    Вариант для версии 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 записи.

    Сергей 3.6 года назад

    Спасибо тебе огромное, сколько не обращался к тебе за помощью, всегда получал положительный ответ. Удачи тебе и процветания твоему блогу!!!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация