Если в LearnPress нужно закрыть от индексации не весь сайт, а только отдельные типы страниц — курсы, уроки, архивы, служебные экраны — лучше делать это точечно. Иначе легко получить ситуацию, когда поисковик продолжает видеть дубли, а навигация по сайту ломается из-за слишком агрессивных правил.
Ниже — рабочая схема для WordPress: сначала определяем, какие страницы реально надо закрыть, затем ставим noindex на нужные шаблоны и проверяем, что в HTML и заголовках ответа нет противоречий с картой сайта и внутренними ссылками.
Когда noindex для LearnPress действительно нужен
Чаще всего проблема не в самих курсах, а в том, что LearnPress создает несколько точек входа в один и тот же контент: архивы, страницы курсов, уроки, вкладки, технические страницы, иногда результаты квиза или страницы с параметрами в URL. Если все это индексируется, поисковик получает шум вместо структуры.
Типовые сценарии
- нужно скрыть уроки, но оставить индексируемыми страницы курсов;
- надо убрать из индекса архивы курсов и уроков, но не сломать переходы внутри сайта;
- служебные страницы вроде профиля, корзины, результатов, личного кабинета не должны попадать в поиск;
- в sitemap уже есть URL, которые не должны индексироваться.
Важно: noindex не удаляет страницу из интернета мгновенно. Это сигнал поисковику не включать URL в индекс, но для устойчивого результата нужно убрать противоречия: не оставлять страницу в sitemap, не плодить дубли и не закрывать ее одновременно через robots.txt и внутренние ссылки без необходимости.
Диагностика: что именно индексируется сейчас
Перед правкой проверьте, что поисковик видит на странице. Для этого откройте HTML исходник и найдите meta robots, а также проверьте заголовки ответа, если сайт отдает X-Robots-Tag.
Что смотреть вручную
- есть ли в
<head>тег<meta name="robots" content="index,follow">или аналогичный; - не добавляет ли SEO-плагин свои правила поверх ваших;
- есть ли URL в XML-карте сайта;
- не дублируется ли контент через архивы, пагинацию или параметры.
Если используете инструменты разработчика в браузере, проверьте исходный HTML, а не только DOM после выполнения JavaScript. Поисковики ориентируются на серверный ответ, а не на то, что дорисовал скрипт.
Пошаговое решение через functions.php или мини-плагин
Самый предсказуемый вариант — добавить правило в дочернюю тему или отдельный мини-плагин. Так вы не зависите от ручных настроек в админке и можете точно ограничить действие только нужными типами страниц.
Ниже пример, который ставит noindex,follow для одиночных уроков и курсов LearnPress, а также для архивов этих типов записей. Если у вас другие условия, список можно сузить.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_singular( array( 'lp_course', 'lp_lesson' ) ) || is_post_type_archive( array( 'lp_course', 'lp_lesson' ) ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
unset( $robots['index'] );
}
return $robots;
} );Этот способ работает на уровне стандартного фильтра WordPress wp_robots. Он предпочтительнее, чем вставка готовой строки в шаблон, потому что не ломает совместимость с другими правилами и SEO-плагинами.
Если нужен точечный запрет только для отдельных страниц
Иногда закрывать весь тип записи нельзя: например, курсы должны индексироваться, а уроки — нет. Тогда лучше проверять конкретные ID, слаг или пользовательскую логику.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_singular( 'lp_lesson' ) ) {
$lesson_id = get_queried_object_id();
$blocked_lessons = array( 123, 456, 789 );
if ( in_array( $lesson_id, $blocked_lessons, true ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
unset( $robots['index'] );
}
}
return $robots;
} );Такой подход удобен, если часть уроков — закрытые материалы, а часть — публичные. Но список ID нужно поддерживать вручную, иначе через пару месяцев он станет бесполезным.
Сравнение подходов: плагин, код, robots.txt
| Подход | Что делает | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Добавляет meta robots через интерфейс | Быстро, без кода | Не всегда удобно для точечных условий LearnPress |
Код через wp_robots | Гибко ставит noindex на нужные шаблоны | Контроль, предсказуемость | Нужно аккуратно тестировать |
robots.txt | Ограничивает обход страниц | Просто закрыть от сканирования | Не заменяет noindex, если URL уже известен поисковику |
Если задача именно в индексации, а не в обходе, robots.txt сам по себе не решает проблему. Страница может остаться в индексе как URL без контента. Поэтому для LearnPress обычно лучше сочетать noindex и чистую структуру сайта.
Как не сломать sitemap и внутренние ссылки
После добавления noindex проверьте, не остались ли закрытые страницы в XML-карте сайта. Если они там есть, поисковик все равно будет регулярно их обходить. Это не всегда критично, но создает лишний шум и замедляет переобход полезных URL.
Если используете SEO-плагин, исключите из sitemap те типы записей или конкретные страницы, которые закрываете от индексации. Для LearnPress это особенно важно, если уроки генерируются массово и часто обновляются.
Что проверить после внедрения
- в исходном HTML есть
noindexна нужных страницах; - в sitemap нет закрытых URL;
- внутренние ссылки по-прежнему работают;
- страница не отдает случайно одновременно
indexиnoindexиз разных источников; - в Search Console нет роста числа «Просканировано, но не проиндексировано» именно по этим URL.
Проверка результата после внедрения
Проверять нужно не только глазами в браузере. Откройте страницу и посмотрите исходный код: в <head> должен быть корректный meta robots. Если у вас включен серверный X-Robots-Tag, проверьте и заголовки ответа.
Пример команды для проверки заголовков:
curl -I https://example.com/course/sample-lesson/В ответе не должно быть противоречивых указаний вроде X-Robots-Tag: index, follow, если вы ожидаете noindex. Если SEO-плагин пишет свои правила, а код — свои, итоговое поведение может оказаться не тем, что вы планировали.
Для повторной проверки в Search Console используйте инспекцию URL и запросите переобход. Но не ждите мгновенного удаления: поисковая система обновляет индекс не сразу.
Частые ошибки и как их исправить
1. Закрыли страницу в robots.txt и ждут удаления из индекса
Это частая ошибка. Если URL уже известен поисковику, он может остаться в выдаче без содержимого. Для удаления из индекса нужен именно noindex или корректная каноникализация, а не только запрет обхода.
2. Поставили noindex на весь сайт вместо отдельных типов
Такое случается, когда правило пишут слишком широко. Проверяйте условия is_singular() и is_post_type_archive(), чтобы не задеть страницы блога, главную или важные посадочные.
3. Оставили закрытые URL в sitemap
Поисковик продолжает их обходить, даже если они не должны индексироваться. Уберите их из карты сайта на стороне SEO-плагина или фильтрами, если карта генерируется программно.
4. Конфликтуют несколько SEO-плагинов или кастомный код
Если один плагин ставит index, а другой — noindex, итог зависит от того, как именно собран HTML. Оставьте один источник правды для robots-правил.
Практические советы по безопасности и производительности
Не храните такие правки прямо в родительской теме LearnPress-темы: после обновления они исчезнут. Используйте дочернюю тему или отдельный мини-плагин. Это безопаснее и проще для сопровождения.
Если у вас много условий для разных типов страниц, вынесите список правил в отдельную функцию и документируйте, какие URL закрыты и почему. Через полгода это сэкономит время на разборе индексации.
Для больших сайтов полезно держать короткий чек-лист перед релизом:
- проверить исходный HTML на нужных шаблонах;
- сверить sitemap;
- убедиться, что каноникал указывает на правильную страницу;
- не закрывать важные страницы случайно через глобальные настройки SEO-плагина;
- после обновления LearnPress повторно проверить шаблоны уроков и курсов.
Если вам нужно не только закрыть дубли, но и почистить сайт от технического мусора, полезно смотреть в сторону инструментов вроде Clearfy Pro: у него есть функции для удаления дублей и технической чистки, но применять их стоит только после проверки, что они не конфликтуют с вашей текущей SEO-логикой.