Диагностика задачи: зачем исключать страницы из индексации
Во многих проектах на WordPress возникает необходимость скрыть от поисковых систем определённые страницы. Это могут быть страницы с низкокачественным или дублирующимся контентом, страницы политики конфиденциальности, тестовые страницы или личные кабинеты. Если оставить их в индексе, это может снизить рейтинг сайта или привести к появлению дублирующегося контента.
YoastSEO позволяет гибко управлять индексацией через meta-теги robots. Задача — массово исключить из индексации несколько страниц без ручного редактирования каждой.
Как определить, какие страницы исключать
Для начала сформируйте список URL или ID страниц, которые хотите закрыть для индексации. Например:
- Страницы с тестовым контентом (ID 101, 102, 103)
- Страница политики конфиденциальности (slug privacy-policy)
- Страницы с тегом «noindex» в пользовательском поле
Удобнее всего использовать ID или slug для программного определения.
Пошаговое решение: массовое добавление noindex для выбранных страниц в WordPress с YoastSEO
1. Использование фильтра wpseo_robots
YoastSEO предоставляет фильтр wpseo_robots, который позволяет динамически менять содержимое meta-тега robots перед выводом.
Добавьте в functions.php вашей темы или в отдельный плагин следующий код:
function exclude_pages_from_indexing( $robots ) {
// Массив ID страниц для исключения
$excluded_ids = array(101, 102, 103);
// Массив slug страниц для исключения
$excluded_slugs = array('privacy-policy');
if ( is_page() ) {
global $post;
if ( in_array( $post->ID, $excluded_ids ) || in_array( $post->post_name, $excluded_slugs ) ) {
// Добавляем noindex, nofollow
return 'noindex, nofollow';
}
}
return $robots;
}
add_filter( 'wpseo_robots', 'exclude_pages_from_indexing' );Этот код проверяет, если текущая страница находится в списке исключений, то для неё выводится meta-robots с noindex, nofollow.
2. Управление через пользовательское поле
Если хотите управлять noindex с помощью кастомного поля (например, seo_noindex), можно расширить код:
function exclude_pages_by_custom_field( $robots ) {
if ( is_singular() ) {
global $post;
$noindex = get_post_meta( $post->ID, 'seo_noindex', true );
if ( $noindex === '1' ) {
return 'noindex, nofollow';
}
}
return $robots;
}
add_filter( 'wpseo_robots', 'exclude_pages_by_custom_field' );Теперь достаточно поставить в нужных страницах пользовательское поле seo_noindex со значением 1.
Как проверить, что страницы реально исключены из индексации
- Откройте исходный код страницы в браузере (Ctrl+U).
- Найдите тег
<meta name="robots" content="noindex, nofollow">. - Используйте инструменты Google Search Console: в разделе "Проверка URL" убедитесь, что страница имеет статус «запрещено для индексации».
- Через команду в терминале
curl -I https://example.com/page-urlможно проверить HTTP-заголовки, но мета-тег выводится в HTML.
Частые ошибки и их исправление
- Ошибка: noindex не применяется, страницы всё равно индексируются.
Причина: Кэширование сайта или плагина.
Решение: Очистите кэш плагина (например, WP Super Cache, W3 Total Cache) и кэш браузера. - Ошибка: meta robots переопределяется другим плагином.
Причина: Конфликт с другими SEO-плагинами или темами.
Решение: Отключите другие плагины SEO, проверьте фильтры. Можно повысить приоритет фильтра YoastSEO:add_filter('wpseo_robots', 'exclude_pages_from_indexing', 20); - Ошибка: noindex применяется к нужным страницам, но ссылки на них продолжают появляться в sitemap.
Причина: YoastSEO генерирует sitemap, включая данные страницы.
Решение: В настройках YoastSEO отключите индексацию этих страниц или используйте фильтрwpseo_sitemap_exclude_postдля исключения.
Практические советы по безопасности и производительности
- Не добавляйте тяжелую логику в фильтры, вызываемые на каждой странице — используйте кеширование результата, если список страниц большой.
- При работе с пользовательскими полями оптимизируйте запросы, чтобы не нагружать базу.
- Периодически проверяйте sitemap и индексирование в Google Search Console для своевременного обнаружения проблем.
Сравнение способов исключения страниц из индексации
| Метод | Описание | Преимущества | Недостатки |
|---|---|---|---|
| Настройки YoastSEO (UI) | Отдельно для каждой страницы через мета-бокс | Просто, не требует кода | Не масштабируемо для большого числа страниц |
Фильтр wpseo_robots с ID/slug |
Программное управление через functions.php | Гибко, масштабируемо | Требует навыков разработки |
| Через пользовательское поле | Управление через UI, но с программной логикой | Легко добавлять без кода, гибко | Нужно обеспечить правильное заполнение поля |