Сценарий типичный: курсы и уроки в LearnPress доступны по прямым URL, но в поиск они попадают раньше, чем вы успеваете настроить структуру каталога, фильтры и посадочные страницы. В результате в индексе оказываются страницы с тонким контентом, дубли архивов, служебные URL и черновые карточки, которые не должны конкурировать с основными страницами сайта.
Задача здесь не в том, чтобы «спрятать всё подряд». Нужно аккуратно закрыть от индексации именно учебные сущности: отдельные курсы, уроки, тесты, а иногда и архивы таксономий, если они не несут самостоятельной ценности. При этом страницы должны продолжать открываться для пользователей и нормально работать внутри сайта.
Когда проблема уже видна в поиске
Проверять стоит не только Search Console. Часто проблема заметна прямо в выдаче: в индексе появляются URL вида /course/..., /lesson/... или страницы с параметрами, которые вы не планировали продвигать. Если сайт новый, это может быть не критично. Но на живом проекте такие страницы быстро размывают релевантность и мешают SEO-структуре.
Признаки, что закрытие от индексации действительно нужно
- в поиске есть страницы уроков, которые не должны ранжироваться отдельно;
- в индексе дублируются архивы курсов и отдельные карточки;
- служебные страницы LearnPress получают трафик вместо нормальных посадочных;
- в отчётах Search Console растёт число «Просканировано, но не проиндексировано» для учебных URL;
- по
site:example.comвидны страницы, которые вы не хотите показывать пользователю из поиска.
Что именно закрывать: robots.txt, noindex или оба варианта
Это важный момент. robots.txt и noindex решают разные задачи. robots.txt запрещает сканирование, но не гарантирует удаление уже проиндексированного URL. noindex сообщает поисковику, что страницу не нужно держать в индексе, но для этого робот должен иметь возможность её увидеть.
| Подход | Что делает | Когда использовать | Ограничение |
|---|---|---|---|
robots.txt | Запрещает сканирование | Для служебных разделов и тяжёлых URL | Не всегда убирает уже проиндексированные страницы |
noindex | Просит не индексировать страницу | Для отдельных курсов, уроков, тестов | Страница должна быть доступна для обхода |
| Оба вместе | Сканирование и индексация ограничены | Для закрытых или временно ненужных разделов | Нужно понимать последствия для удаления из индекса |
Если речь о конкретных курсах и уроках, обычно лучше ставить noindex на уровне шаблона или через SEO-плагин. robots.txt уместен для архивов, параметров и технических URL, но не как единственный способ убрать уже известные поисковику страницы.
Пошаговое решение через код темы или мини-плагин
Самый надёжный вариант — добавить noindex, follow для нужных типов записей. Это не ломает переходы по ссылкам внутри сайта, но запрещает индексацию самих страниц. Если у вас уже стоит SEO-плагин, проверьте, не делает ли он это автоматически для произвольных типов записей. Если нет — добавьте фильтр в дочернюю тему или в небольшой mu-plugin.
1. Определите, какие типы записей использует LearnPress
В большинстве установок курсы и уроки представлены отдельными типами записей. Точное имя зависит от версии и связки плагинов, поэтому сначала проверьте зарегистрированные post type в коде или через админку. Не стоит слепо копировать чужой пример, если у вас кастомная конфигурация.
2. Добавьте мета robots для нужных страниц
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_singular( array( 'lp_course', 'lp_lesson', 'lp_quiz' ) ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант работает на современных версиях WordPress, где используется фильтр wp_robots. Если у вас SEO-плагин уже управляет robots-мета, проверьте приоритеты: иногда плагин перезаписывает значение, и ваш код просто не виден в итоговом HTML.
3. Если нужно закрыть архивы, используйте conditional logic
Архивы курсов, рубрики и таксономии часто полезны для навигации, но не всегда должны индексироваться. Здесь лучше действовать точечно: закрывать только те архивы, которые дублируют основную структуру или не содержат уникального контента.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_post_type_archive( 'lp_course' ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
if ( is_tax( array( 'course_category', 'course_tag' ) ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Если вы не уверены в названиях таксономий, сначала посмотрите их в коде регистрации LearnPress или в базе данных. Ошибка в имени таксономии — одна из самых частых причин, почему правило «не сработало».
Как закрыть страницы через SEO-плагин без кода
Если проект ведётся через SEO-плагин, это часто проще и безопаснее для редактора. Важно только не смешивать два источника управления robots: плагин и ручной код. Иначе потом сложно понять, кто именно выставил noindex.
Практический порядок такой: откройте настройки типа записи курса, проверьте, можно ли отключить индексацию для отдельных post type, затем отдельно проверьте архивы и таксономии. Если плагин позволяет задать noindex на уровне шаблона, это предпочтительнее, чем править тему.
Проверка результата после внедрения
После изменения не ограничивайтесь просмотром страницы в браузере. Нужно проверить именно HTML-вывод и поведение поискового робота.
- Откройте страницу курса и посмотрите исходный код: должен быть
noindexв meta robots или соответствующий HTTP-заголовок, если он используется. - Проверьте несколько типов страниц: курс, урок, тест, архив курса.
- В Search Console отправьте URL на повторную проверку, если страница уже была в индексе.
- Убедитесь, что внутренняя навигация не сломалась: ссылки на уроки и курсы должны открываться как обычно.
Для быстрой проверки можно использовать просмотр исходника и поиск по строке robots. Если у вас настроен кэш, не забудьте очистить его, иначе вы увидите старую версию страницы и сделаете ложный вывод.
Частые ошибки и как их исправить
Ставят только disallow в robots.txt
Это не всегда убирает URL из индекса. Если страница уже известна поисковику, он может продолжать показывать её без сниппета. Для удаления из индекса нужен именно noindex, а не только запрет сканирования.
Закрывают всё подряд
Иногда вместе с уроками закрывают и полезные архивы, которые должны приводить трафик. В итоге сайт теряет внутренние точки входа. Перед массовым закрытием проверьте, какие страницы реально нужны для навигации и какие можно убрать из поиска без ущерба.
Не очищают кэш
Если на сайте стоит page cache или CDN, старые мета-теги могут сохраняться даже после правки кода. После внедрения обязательно очистите серверный кэш, плагин кэша и, если нужно, кэш CDN.
Пишут правило в неправильный файл
Код в functions.php родительской темы легко потерять при обновлении. Для таких задач лучше использовать дочернюю тему или небольшой mu-plugin. Это особенно важно, если вы регулярно обновляете шаблон.
Безопасность и производительность: что не стоит делать
Не пытайтесь закрыть страницы через редиректы на главную. Это ухудшает диагностику, создаёт путаницу для пользователей и может привести к цепочкам редиректов. Если страница должна открываться, пусть она открывается, но без индексации.
Также не стоит массово править базу данных вручную, если задача решается фильтром или настройкой SEO-плагина. Для LearnPress это особенно актуально: структура курсов и уроков может зависеть от нескольких плагинов и шаблонов, а «быстрая» правка потом оборачивается долгим восстановлением.
Если на сайте много учебного контента и вы параллельно чистите дубли, полезно проверить, не генерирует ли тема лишние архивы и служебные страницы. В таких проектах иногда помогает аккуратная техническая чистка через Clearfy Pro, но только если вы понимаете, какие именно типы страниц и архивы отключаете. Слепое отключение SEO-настроек обычно приносит больше проблем, чем пользы.
Когда лучше не закрывать страницу от индексации
Не ставьте noindex на страницы, которые реально должны собирать органический трафик: посадочные курсов, страницы с уникальным описанием программы, полезные подборки уроков. Если страница отвечает на отдельный поисковый запрос и содержит полноценный контент, её лучше доработать, а не прятать.
Хорошее правило простое: если URL нужен только для прохождения курса, он кандидат на noindex. Если URL должен приводить новых пользователей из поиска, его нужно оптимизировать, а не закрывать.