Если курс, уроки и тесты в LearnPress доступны только для авторизованных пользователей или продаются по подписке, их индексация часто не дает пользы. В поиске начинают всплывать страницы с тонким контентом, дубли архивов, служебные URL и страницы, которые не должны конкурировать с основными посадочными. Ниже — рабочая схема, как закрыть учебные страницы от индексации и при этом не сломать сайт.
Когда это действительно нужно
Не стоит закрывать от индексации весь LearnPress «на всякий случай». Решение уместно, если:
- уроки доступны только после оплаты или входа;
- страницы курса содержат мало уникального текста, а основная ценность — внутри кабинета;
- в поиске уже появились дубли курсов, архивов или страниц с параметрами;
- нужно убрать из индекса тесты, черновые материалы, внутренние страницы преподавателей;
- сайт получает мусорный трафик на служебные URL, но не на коммерческие посадочные.
Если курс — это полноценная публичная статья с большим количеством полезного контента, закрывать его от индексации не всегда разумно. Тогда лучше точечно доработать мета-теги, каноникал и структуру архива.
Диагностика проблемы перед изменениями
Сначала проверьте, что именно индексируется. Частая ошибка — закрыть не те страницы и потом искать причину падения трафика. Откройте в Google Search Console отчеты по страницам и посмотрите, какие URL уже попали в индекс: курсы, уроки, викторины, архивы таксономий, страницы с параметрами.
Полезно отдельно проверить:
- есть ли у учебных страниц мета
noindexуже сейчас; - не отдает ли тема или SEO-плагин дублирующий
<meta name="robots">; - не закрыты ли URL в
robots.txtвместо корректногоnoindex; - не создаются ли дубли через архивы, пагинацию и фильтры;
- не используются ли канонические ссылки на неправильные адреса.
Если страница уже в индексе, одного изменения в коде мало: поисковику нужно время, чтобы переобойти URL и увидеть новый сигнал.
Что лучше: плагин, код или настройка SEO-плагина
Для LearnPress обычно есть три рабочих подхода. Выбор зависит от того, насколько точечно нужно управлять индексацией.
| Подход | Когда подходит | Плюс | Ограничение |
|---|---|---|---|
| Настройка SEO-плагина | Нужно закрыть типы записей и таксономии без кода | Быстро и удобно | Не всегда есть тонкая логика по ролям и статусам |
| Код в теме или мини-плагине | Нужно закрывать только LearnPress-страницы по условиям | Точный контроль | Нужно аккуратно тестировать после обновлений |
| robots.txt | Нужно уменьшить обход мусорных URL | Просто добавить правила | Это не замена noindex для уже известных страниц |
Пошаговое решение через код
Если нужен контроль именно на уровне WordPress, удобнее добавить фильтр в мини-плагин или в functions.php дочерней темы. Ниже пример, который закрывает от индексации страницы курсов, уроков и викторин LearnPress, если они относятся к нужным типам записей.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_singular( array( 'lp_course', 'lp_lesson', 'lp_quiz' ) ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Этот вариант работает на уровне стандартного API WordPress и не зависит от конкретного SEO-плагина. Но есть нюанс: если у вас уже подключен Yoast SEO, Rank Math или другой плагин, он может формировать robots-мета по-своему. Тогда нужно проверить, не конфликтуют ли правила.
Если нужно закрывать только часть контента, например уроки и тесты, но оставлять индексируемыми страницы курсов, разделите логику:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_singular( 'lp_lesson' ) || is_singular( 'lp_quiz' ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Если нужно закрыть архивы и таксономии
Иногда проблема не в самих курсах, а в архивных страницах категорий, тегов или авторов. Для них лучше использовать настройки SEO-плагина или отдельную логику в коде. Например, если архивы курсов не несут самостоятельной ценности, их можно закрыть так:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_post_type_archive( 'lp_course' ) || is_tax( array( 'course_category', 'course_tag' ) ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Названия таксономий у вас могут отличаться в зависимости от версии LearnPress и установленных дополнений. Перед применением проверьте реальные slug в админке или через register_taxonomy в коде темы/плагина.
Что добавить в robots.txt, а что не стоит
robots.txt полезен для снижения лишнего обхода, но не решает задачу индексации сам по себе. Если страница уже известна поисковику, запрет в robots может даже помешать увидеть noindex на самой странице.
Обычно имеет смысл закрывать от обхода только технический мусор:
- служебные параметры сортировки и фильтров;
- внутренние страницы поиска;
- URL предпросмотра, если они создаются;
- непубличные endpoint-адреса, если они реально не нужны в поиске.
Пример аккуратного правила:
User-agent: *
Disallow: /?s=
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpНе стоит массово закрывать в robots.txt сами страницы курсов и уроков, если вы хотите гарантированно убрать их из индекса. Для этого надежнее noindex на странице и корректный статус ответа.
Проверка результата после внедрения
После изменений не ограничивайтесь просмотром исходного кода в браузере. Проверьте три вещи: мета-роботы, каноникал и ответ сервера.
- Откройте страницу курса или урока и посмотрите HTML-код: должен быть виден
noindex. - Проверьте, не дублируется ли тег robots из SEO-плагина и из темы.
- В Search Console отправьте URL на переобход и посмотрите, как меняется статус.
Если используете командную строку, можно быстро проверить заголовки и HTML через curl:
curl -I https://example.com/course/sample-course/
curl -s https://example.com/course/sample-course/ | grep -i robotsНа практике важно дождаться повторного обхода. Если URL уже в индексе, он не исчезнет мгновенно после правки кода.
Частые ошибки и как их исправить
Закрыли страницы в robots.txt вместо noindex
Это самая частая ошибка. Поисковик может перестать обходить URL, но не всегда быстро убирает его из индекса. Если задача — именно удаление из поиска, используйте noindex на странице.
Поставили noindex на все подряд
Иногда вместе с уроками закрывают страницы курсов, архивы и полезные посадочные. В результате падает видимость сайта. Сначала определите, какие URL должны привлекать трафик, а какие — нет.
Конфликт с SEO-плагином
Если Yoast SEO или Rank Math уже формируют robots-мета, ваш код может не дать ожидаемого результата. Проверьте итоговый HTML и отключите дублирующую настройку в плагине.
Закрыли URL, но оставили внутренние ссылки
Это не критично, но если страница больше не должна участвовать в навигации, уберите ее из меню, блоков и списков похожих материалов. Иначе поисковик и пользователи продолжат на нее попадать.
Практические советы по безопасности и производительности
Если вы закрываете учебные страницы от индексации, это не значит, что их можно игнорировать. Убедитесь, что:
- доступ к закрытым урокам действительно ограничен на уровне плагина или логики темы;
- нет публичных прямых ссылок на файлы, видео и вложения;
- не индексируются вложения медиафайлов, если они дублируют контент уроков;
- кеш не сохраняет старую версию страницы с неправильным robots-тегом;
- после обновления шаблонов вы повторно проверяете исходный код.
Если на сайте много служебных страниц и дублей, имеет смысл дополнительно использовать инструменты для чистки дублей и технических мелочей. Например, в Clearfy Pro есть набор настроек для SEO- и технической оптимизации WordPress, но даже в этом случае логику для LearnPress лучше проверить вручную на конкретных URL.
Рабочий ориентир простой: публичные страницы должны индексироваться осознанно, а учебный кабинет — только если это действительно часть стратегии продвижения. Для LearnPress это обычно решается не одним переключателем, а комбинацией noindex, каноникала, настроек SEO-плагина и проверки в Search Console.