Skip to content

Все для WordPress, веб-розробки — і не тільки

🚫 Як закрити сторінки пагінації від індексу в Yoast SEO

🚫 Як закрити сторінки пагінації від індексу в Yoast SEO

Коли у вас сотні постів, десятки категорій і хмара тегів, сторінки пагінації множаться непомітно. /page/2/, потім /page/3/, потім /page/15/, і ось уже Google індексує тисячу сміттєвих URL, які не несуть унікального контенту, але з’їдають краулінговий бюджет.

У старих версіях Yoast SEO був вбудований перемикач «Noindex subpages of archives». Позначка, і проблему вирішено. Але у 2020 році команда Yoast прибрала це налаштування з інтерфейсу. Офіційна позиція: Google став розумніше працювати з пагінованими серіями, і налаштування більше не потрібне.

На практиці потрібне. Особливо великим сайтам, де кожна зайва сторінка в індексі від’їдає квоту обходу в тих URL, які справді мають ранжуватися.

Розробники Yoast залишили лазівку: фільтр wpseo_robots. З його допомогою можна програмно виставити noindex, follow для будь-яких сторінок пагінації. Нижче два варіанти коду: жорсткий (усі /page/-URL) і вибірковий (тільки архіви категорій і тегів).

💡 Швидкий огляд:

  • Дізнаєтеся, чому Yoast прибрав вбудовану опцію і в яких випадках вона все ще потрібна
  • Отримаєте готовий код для functions.php: два варіанти фільтра wpseo_robots
  • Навчитеся перевіряти результат через вихідний код сторінки та Google Search Console

Чому сторінки пагінації варто закрити від індексу

У кожної сторінки пагінації три проблеми. Перша, дублювання контенту: /category/seo/, /category/seo/page/2/ і /category/seo/page/3/ показують одні й ті самі анонси, просто розбиті посторінково. Друга, тонкий контент: на сторінці пагінації немає повноцінної статті, тільки список заголовків з excerpt-ами. Третя, краулінговий бюджет: Googlebot витрачає ліміт обходів на URL, які не мають пошукової цінності, замість того щоб переобійти свіжі пости.

Yoast SEO історично вмів вирішувати це завдання однією позначкою в налаштуваннях. Але з версії 14.0 компанія переглянула підхід. Логіка була такою: Google навчився розпізнавати rel="prev" і rel="next", розуміє структуру пагінації та сам спрямовує користувачів на першу сторінку. А noindex на підсторінках, на думку Yoast, скорочує кількість обходів і заважає пошуковику перевідкривати старі статті через посилання з цих сторінок.

Аргумент спірний. Якщо у вас невеликий блог на 30 постів, ок, Google розбереться. Але якщо сайт розрісся до кількох тисяч URL з пагінацією категорій, тегів і архівів дат, пошуковик витрачає час не на те. Закрити підсторінки від індексу через код, контрольоване й оборотне рішення.

Варіант 1: noindex для всіх сторінок пагінації

Найпростіший і радикальний підхід. Фільтр перевіряє умову is_paged(), стандартну функцію WordPress, яка повертає true на будь-якій сторінці пагінації (архіви, категорії, теги, головна). Якщо умова істинна, підставляємо noindex, follow.

Додайте цей код у functions.php активної теми або через плагін Code Snippets:

1add_filter('wpseo_robots', function($robots) {
2 if (is_paged()) {
3 return 'noindex,follow';
4 }
5 return $robots;
6});

Що відбувається порядково:

  • add_filter('wpseo_robots', ...), чіпляємося до фільтра Yoast SEO, який відповідає за вміст мета-тега robots. Фільтр приймає поточне значення $robots і очікує рядок назад.
  • is_paged(), вбудована функція WordPress з ядра. Спрацьовує на будь-якому URL, де присутня змінна paged (тобто /page/N/).
  • return 'noindex,follow', говоримо пошуковику: «не індексуй цю сторінку, але переходь за посиланнями з неї». Посилання всередині пагінації продовжують передавати вагу.
  • return $robots, для всіх інших сторінок повертаємо стандартне значення Yoast без змін.

Після додавання коду зайдіть на будь-яку сторінку на кшталт /category/seo/page/2/ і відкрийте вихідний HTML (Ctrl+U). Знайдіть рядок <meta name="robots". Якщо бачите content="noindex, follow", фільтр відпрацював.

Варіант 2: noindex тільки для архівів категорій і тегів

Перший варіант б’є по всіх paginated-сторінках без розбору, включно з головною (/page/2/). Якщо головна сторінка сайту виводить анонси постів і ви хочете зберегти її підсторінки в індексі, потрібна більш прицільна логіка.

Додаємо другу умову, is_archive(). Ця функція WordPress повертає true тільки на сторінках архівів: категорій, тегів, архівах дат, архівах авторів і кастомних таксономій.

1add_filter('wpseo_robots', function($robots) {
2 if (is_paged() && is_archive()) {
3 return 'noindex,follow';
4 }
5 return $robots;
6});

Різниця з першим варіантом у поєднанні умов. is_paged() && is_archive() означає: «сторінка пагінації І сторінка архіву одночасно». Пагінація головної (/page/2/) під умову is_archive() не потрапляє, тому її індексація зберігається.

Який варіант обрати:

Ситуація

Варіант

Великий сайт, тисячі URL пагінації, потрібен максимальний контроль

Варіант 1

Головна виводить стрічку постів, підсторінки головної важливі для індексу

Варіант 2

Інтернет-магазин на WooCommerce з категоріями товарів

Варіант 2

Потрібна передбачуваність і мінімум винятків

Варіант 1

Як перевірити результат

Після вставки коду перевірте три речі.

Перше, вихідний код. Відкрийте будь-яку сторінку пагінації, Ctrl+U, пошук за <meta name="robots". Переконайтеся, що бачите content="noindex, follow", а не content="index, follow".

Друге, Google Search Console. Зайдіть в інструмент перевірки URL, вставте адресу paginated-сторінки та натисніть «Перевірити». У блоці «Індексування» побачите статус: «Сторінка не проіндексована» з причиною «Виключено тегом noindex». Це підтверджує, що Googlebot отримав і обробив директиву.

Третє, динаміка індексу. У Search Console відкрийте «Індекс» → «Сторінки». Через 2-4 тижні після впровадження коду ви побачите зростання кількості сторінок у статусі «Виключено тегом noindex» і скорочення проіндексованих paginated-URL. Процес не миттєвий: Googlebot має переобійти кожен URL, щоб зчитати новий тег.

Важливі обмеження та застереження

Код змінює поведінку всього сайту. Перед впровадженням переконайтеся, що розумієте наслідки.

Різке випадання тисяч сторінок з індексу може тимчасово просісти за трафіком. Якщо сайт жив з індексацією пагінації кілька років і частина підсторінок отримувала пошукові переходи, ви ці переходи втратите. Натомість звільниться краулінговий бюджет для сторінок, які справді мають ранжуватися. Але період адаптації у 3-6 тижнів неминучий.

Робіть бекап functions.php перед правками. Синтаксична помилка в PHP-коді покладе весь сайт (white screen of death). Якщо використовуєте Code Snippets, плагін сам відловить фатальну помилку та деактивує сніпет. Якщо правите functions.php напряму, тримайте під рукою FTP-доступ, щоб відкотити файл.

Якщо на сайті встановлено кешувальний плагін (WP Rocket, W3 Total Cache), скиньте кеш після додавання коду. Інакше старі HTML-копії сторінок без нового мета-тега robots віддаватимуться відвідувачам і пошуковикам кілька годин або днів.

Більш детальний розбір усіх можливостей Yoast SEO, від встановлення до тонкого налаштування мета-тегів, дивіться в нашому посібнику з налаштування Yoast SEO для WordPress.

⁉️🤔 Часті запитання

Чому Yoast SEO прибрав вбудовану опцію noindex для підсторінок?

Google навчився розпізнавати пагіновані серії через теги rel="prev" і rel="next" і спрямовувати користувачів на першу сторінку. Yoast вирішив, що примусовий noindex на підсторінках скорочує обходи та заважає переіндексації старих статей через посилання з paginated-сторінок. Офіційна довідка Yoast підтверджує: налаштування видалили з інтерфейсу, але фільтр wpseo_robots залишився для програмного керування.

Фільтр wpseo_robots все ще підтримується у 2026 році?

Так. Фільтр wpseo_robots працює в актуальних версіях Yoast SEO (24.x, 2026 рік) і задокументований у Metadata API на developer.yoast.com. Важлива зміна: до версії 19.8 фільтр дозволяв повернути false для видалення мета-тега robots. Починаючи з 19.8, повернення false ігнорується, фільтр очікує тільки рядок ('noindex,follow' або $robots). Обидва варіанти коду зі статті повертають рядок і повністю сумісні.

Чи спрацює код, якщо у сайта кастомна структура пагінації?

Функція is_paged() спирається на стандартний query-параметр WordPress paged. Якщо пагінація реалізована через кастомний параметр (наприклад, ?pg=2 або віртуальний скролінг), умова не спрацює. Для кастомної пагінації замініть is_paged() на перевірку конкретного query_var: get_query_var('custom_page_var'). Плагіни на кшталт WP-PageNavi працюють через стандартний paged, конфлікту немає.

Через скільки Google прибере paginated-сторінки з індексу?

У середньому від 2 до 6 тижнів. Швидкість залежить від розміру сайту та частоти обходів: на сайті зі щоденними обходами Googlebot переобійде основні розділи за 7-10 днів, на невеликому блозі зі щотижневими обходами, за місяць. Прискорити можна через ручний запит переобходу в Search Console (розділ «Індекс» → «Сторінки» → вибір URL → «Запросити індексування»), але Google обробляє такі запити в порядку черги.

Чи можна закрити пагінацію через robots.txt замість noindex?

Технічно так: Disallow: */page/* у robots.txt заборонить обхід paginated-URL. Але це гірше, ніж noindex. Причина: robots.txt блокує обхід сторінки, а не її індексацію. Якщо на paginated-сторінку ведуть зовнішні посилання, Google може проіндексувати її як «сторінку без опису». При цьому посилання з самої сторінки теж не будуть обійдені, ви втратите передачу ваги на пости. noindex, follow вирішує обидва завдання: сторінка не індексується, але посилання з неї обходяться.

Чи варто закривати пагінацію від індексу у вашому випадку

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

Якщо у вас 50 постів і три категорії, не переймайтеся. Google розбереться, які сторінки показувати у видачі, а зайві сам відсіє як малоцінні. Фільтр wpseo_robots у цьому сценарії, надмірне ускладнення.

Якщо у вас 500+ постів, десятки категорій, активний блог із тегами та архівом дат, пагінація створює сотні й тисячі URL, які пошуковик обходить замість свіжих статей. Вмикайте варіант 2 (архіви) або варіант 1 (усе), перевіряйте результат через вихідний код і Search Console, і дайте Google 3-4 тижні на переобхід.

Код оборотний: закоментували фільтр, через місяць усі paginated-сторінки повернуться в індекс. Жодних необоротних наслідків.