Як у Yoast SEO відключити пагінацію в канонічних посиланнях категорій та тегів

Як у Yoast SEO відключити пагінацію в канонічних посиланнях категорій та тегів

Існує чудовий плагін Yoast SEO від Yoast у репозиторії WordPress. У ньому є досить багато функцій, які задовольняють більшість потреб не лише початківців, але й досвідчених SEO-фахівців.

Але мова зараз піде не про функціональні можливості цього плагіна чи його переваги над іншими аналогами. А саме про пагінацію в канонічних посиланнях тегів і категорій.

Що таке канонічні посилання і навіщо вони потрібні? Документація Google говорить наступне:

Канонічною вважається URL-адреса сторінки, яку роботи Google вважають основною серед декількох її варіантів на вашому сайті. Наприклад, якщо одна і та ж сторінка доступна за кількома адресами, такими як example.com?dress=1234 і example.com/dresses/1234, одна з версій буде вибрана як канонічна. Зверніть увагу, що сторінки можуть бути не повністю однаковими і навіть належати до різних доменів.

Це також стосується Яндекса та інших пошукових систем.

Повернімося до плагіна Yoast. За замовчуванням, канонічні посилання на сторінках пагінації категорій і тегів виглядають ось так:

<link rel="canonical" href="http://wordpress.l/category/bez-rubriki/page/2/" />
<link rel="canonical" href="http://wordpress.l/tag/teg1/page/2/" />

Що не дуже позитивно впливає на SEO. Краще, щоб вони вели на головну сторінку категорії, тега або будь-якої користувацької таксономії (якщо такі використовуються на сайті). Тобто, мали б вигляд:

<link rel="canonical" href="http://wordpress.l/category/bez-rubriki/page/" />
<link rel="canonical" href="http://wordpress.l/tag/teg1/page/" />

Щоб реалізувати це, звернемося до документації плагіна Yoast. У ній неодноразово згадується фільтр wpseo_canonical. Спробуємо використати його, щоб покращити ситуацію. Для цього напишемо наступний код:

add_filter('wpseo_canonical', function($canonical) {

	if(is_category() && is_paged())
	{
		$Term = get_term_by('id', get_query_var('cat'), 'category');
		return get_category_link($Term -> term_id);
	}
	elseif(is_tag() && is_paged())
	{
		$Term = get_term_by('slug', get_query_var('tag'), 'post_tag');
		return get_tag_link($Term -> term_id);
	}
	
	return $canonical;
}, 10, 1);

Що він робить:

  1. Перевіряє, чи ми зараз знаходимося на сторінці категорії або тега, і чи це не перша сторінка (тобто друга, третя і т.д.).
  2. Отримує дані терміну за допомогою функції get_term_by().
  3. Отримує посилання на головну сторінку терміну: для категорій — get_category_link(), для тегів — get_tag_link().
  4. Для всіх інших випадків повертає канонічне посилання, сформоване плагіном за замовчуванням.
Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

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