Існує чудовий плагін 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);Що він робить:
- Перевіряє, чи ми зараз знаходимося на сторінці категорії або тега, і чи це не перша сторінка (тобто друга, третя і т.д.).
- Отримує дані терміну за допомогою функції
get_term_by(). - Отримує посилання на головну сторінку терміну: для категорій —
get_category_link(), для тегів —get_tag_link(). - Для всіх інших випадків повертає канонічне посилання, сформоване плагіном за замовчуванням.
