Проблема: WordPress из коробки — SEO-катастрофа
За 8 лет аудита 300+ сайтов на WordPress я видел одну закономерность: 80% владельцев устанавливают CMS, активируют Yoast SEO и считают работу законченной. Через полгода они приходят с вопросом: "Почему мы не в топе Google, если зелёные галочки везде стоят?"
Реальность жёстче. WordPress генерирует дубли страниц (archives, tags, feeds), загружает 15+ скриптов на пустой странице, игнорирует Core Web Vitals и отдаёт HTML без структурированных данных. Поисковики это видят и ранжируют соответственно.
Этот гайд — технический чеклист для разработчиков и SEO-специалистов, кто хочет выжать из WordPress максимум для продвижения сайта. Код, конфигурации, измерения — без воды.
Что такое TexSEO и почему это важно для WordPress
TexSEO (Technical SEO) — комплекс технических настроек сайта, влияющих на индексацию и ранжирование в поисковых системах. Сюда входят:
Управление индексацией (robots.txt, meta robots, XML-карты)
Производительность (Core Web Vitals, кэширование, CDN)
Структурированные данные (Schema.org, Open Graph)
Каноникализация и управление дублями
Внутренняя перелинковка и навигация
Для WordPress это критично, потому что CMS из коробки создаёт массу проблем:
Дублирование контента: WordPress генерирует десятки URL для одной записи — архивы по дате, тегам, категориям, feed-ленты. Google индексирует всё и не понимает, какая страница главная.
Медленная загрузка: стандартная установка WordPress + 3 плагина = 25–30 HTTP-запросов и 2+ секунды Time to First Byte. В 2026 году Google требует LCP < 2.5с и INP < 200мс.
Отсутствие структурированных данных: WordPress не добавляет Schema.org разметку автоматически. Это минус к шансам попасть в rich snippets (карточки с рейтингом, FAQ, breadcrumbs).
Преимущества технической SEO-оптимизации WordPress
Рост органического трафика на 30–50% за 3 месяца — из моей практики, правильная настройка индексации и скорости даёт такой эффект без допконтента.
Снижение показателя отказов на 15–25% — быстрая загрузка удерживает пользователей. Google это видит через Chrome User Experience Report.
Попадание в расширенные сниппеты — Schema.org повышает CTR на 20–40% (данные Search Console по 50 сайтам).
Экономия краулингового бюджета — закрытие мусорных URL через robots.txt ускоряет переиндексацию важных страниц в 2–3 раза.
Защита от технических санкций — правильный robots.txt и canonical предотвращают фильтры за дубли контента.
Совместимость с AI-поиском — структурированные данные помогают Яндекс.GPT и Google SGE корректно цитировать ваш сайт.
Долгосрочный эффект — техническая оптимизация работает годами, в отличие от ссылок или контента.
Недостатки и риски
Высокий порог входа: настройка требует знания PHP, работы с .htaccess, понимания архитектуры WordPress. Ошибка в robots.txt может закрыть весь сайт от индексации (видел 12 таких случаев).
Конфликт плагинов: Rank Math + WP Rocket + Autoptimize могут сломать JS/CSS и уронить функциональность. Время на отладку — от 2 часов.
Риск переоптимизации: чрезмерное закрытие страниц от индексации снижает общий авторитет сайта. Google учитывает количество проиндексированных страниц как сигнал размера ресурса.
Зависимость от хостинга: многие оптимизации (HTTP/3, Brotli, Redis) недоступны на дешёвом shared-хостинге. Переезд на VPS — дополнительные 1500–3000 руб./мес.
Невозможность "быстрого результата": техническая SEO требует 1–3 месяцев для полного эффекта. Клиенты часто хотят рост позиций через 2 недели.
Пошаговый технический чеклист для WordPress
Шаг 1: Настройка robots.txt — закрываем мусор от индексации
Цель: запретить Google индексировать служебные директории и дубли.
Время выполнения: 10 минут
WordPress по умолчанию создаёт виртуальный robots.txt через функцию do_robots(). Проблема: он разрешает индексацию /wp-admin/admin-ajax.php и архивов по датам.
Решение: создайте физический файл robots.txt в корне сайта.
textUser-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /*/feed/
Disallow: /*/trackback/
Disallow: /?s=
Disallow: /page/
Disallow: /tag/
Disallow: /author/
Allow: /wp-content/uploads/
Sitemap: https://yoursite.com/sitemap.xml
User-agent: Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: /wp-content/plugins/ Disallow: /wp-content/themes/ Disallow: //feed/ Disallow: /*/trackback/ Disallow: /?s= Disallow: /page/ Disallow: /tag/ Disallow: /author/ Allow: /wp-content/uploads/ Sitemap: https://yoursite.com/sitemap.xml
На что обратить внимание:
Строка
Disallow: /tag/закрывает архивы тегов — используйте, только если теги не несут уникального контента.Disallow: /author/убирает страницы авторов. Для личных блогов оставьте открытыми.Проверьте файл через Google Search Console → "Тестирование robots.txt".
Результат измерений: после закрытия мусорных URL краулинговый бюджет перераспределяется на важные страницы. В Search Console смотрите "Статистика сканирования" — количество запросов к служебным URL должно упасть на 40–60% за 2 недели.
Шаг 2: Управление индексацией через meta robots
Цель: закрыть дубли на уровне HTML.
Время выполнения: 15 минут
Даже если robots.txt запрещает сканирование, Google может проиндексировать URL по внешней ссылке. Решение — добавить <meta name="robots" content="noindex, follow"> на ненужные страницы.
Код для functions.php (закрытие архивов по датам):
phpadd_action('wp_head', 'custom_noindex_archives');
function custom_noindex_archives() {
if (is_date() || is_tag() || is_author()) {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}
add_action('wp_head', 'custom_noindex_archives'); function custom_noindex_archives() { if (is_date() is_tag() is_author()) { echo '<meta name="robots" content="noindex, follow">' . "\n"; } }
Альтернатива через плагин: Rank Math → "Titles & Meta" → отключите индексацию для Date Archives, Tag Archives, Author Archives.
На что обратить внимание: noindex, follow позволяет Google передавать вес ссылок, но не индексировать саму страницу. Для полного закрытия используйте noindex, nofollow.
Шаг 3: XML-карта сайта — помогаем Google находить контент
Цель: автоматически генерировать актуальную карту сайта.
Время выполнения: 5 минут
WordPress 5.5+ создаёт базовую карту на /wp-sitemap.xml, но она включает страницы авторов и медиафайлы (изображения как отдельные URL).
Решение: используйте Rank Math или Yoast SEO для контроля.
Настройка в Rank Math:
Rank Math → Sitemap Settings
Исключите: "Media", "Authors", "Tags"
Установите приоритет: Posts = 0.8, Pages = 0.6, Categories = 0.4
Включите "Автоматическое пингование Google при обновлении"
Код для добавления lastmod в карту (если плагин не делает):
phpadd_filter('wp_sitemaps_posts_query_args', 'custom_sitemap_lastmod');
function custom_sitemap_lastmod($args) {
$args['orderby'] = 'modified';
return $args;
}
add_filter('wp_sitemaps_posts_query_args', 'custom_sitemap_lastmod'); function custom_sitemap_lastmod($args) { $args['orderby'] = 'modified'; return $args; }
Проверка: откройте yoursite.com/sitemap.xml и убедитесь, что там только полезные URL (посты, страницы, категории). Количество URL в карте должно совпадать с проиндексированными страницами в Search Console ± 10%.
Шаг 4: Canonical URL — решаем проблему дублей
Цель: указать Google главную версию страницы.
Время выполнения: 10 минут
WordPress автоматически добавляет <link rel="canonical">, но иногда ошибается. Например, на странице пагинации (/page/2/) canonical может указывать на саму себя, а не на главную страницу категории.
Код для правильного canonical на пагинации:
phpadd_filter('wpseo_canonical', 'custom_pagination_canonical');
function custom_pagination_canonical($canonical) {
if (is_paged() && is_category()) {
$canonical = get_term_link(get_queried_object());
}
return $canonical;
}
add_filter('wpseo_canonical', 'custom_pagination_canonical'); function custom_pagination_canonical($canonical) { if (is_paged() && is_category()) { $canonical = get_term_link(get_queried_object()); } return $canonical; }
Проверка через плагин: Yoast SEO → "Search Appearance" → включите "Canonical URLs". Rank Math делает это по умолчанию.
На что обратить внимание: не ставьте canonical на главную страницу сайта с пагинации /page/2/. Google воспримет это как попытку скрыть тонкий контент.
Шаг 5: Оптимизация Core Web Vitals — ускоряем загрузку
Цель: достичь LCP < 2.5с, INP < 200мс, CLS < 0.1.
Время выполнения: 30–60 минут
5.1. Отложенная загрузка JS/CSS
WordPress загружает jQuery, эмодзи-скрипты, embed.js на каждой странице. Уберите лишнее:
php// Отключение эмодзи
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
// Отключение embeds (если не используете вставки из YouTube/Twitter)
function disable_embeds() {
wp_dequeue_script('wp-embed');
}
add_action('wp_footer', 'disable_embeds');
// Отключение эмодзи remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('wp_print_styles', 'print_emoji_styles'); // Отключение embeds (если не используете вставки из YouTube/Twitter) function disable_embeds() { wp_dequeue_script('wp-embed'); } add_action('wp_footer', 'disable_embeds');
5.2. Ленивая загрузка изображений
WordPress 5.5+ добавляет loading="lazy" автоматически, но только для <img>. Для фоновых изображений используйте Intersection Observer API.
5.3. Конвертация в WebP
Плагин Imagify или ShortPixel автоматически конвертируют JPG/PNG в WebP при загрузке. Экономия: 30–50% размера файла.
Измерение результата: используйте PageSpeed Insights или WebPageTest.org. До оптимизации — LCP 3.8с, после — 2.1с (реальный кейс интернет-магазина на WooCommerce).
Шаг 6: Кэширование и HTTP/2
Цель: снизить TTFB до 200–400мс.
Время выполнения: 20 минут
Плагин WP Rocket (платный, $59/год) или W3 Total Cache (бесплатный).
Настройки WP Rocket:
Page Caching: включено
Cache Lifespan: 10 часов
Minify CSS/JS: включено
Defer JS: включено
CDN: подключите Cloudflare (бесплатный план)
Код для включения Gzip (если хостинг не поддерживает):
Добавьте в .htaccess:
text<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript </IfModule>
Проверка: откройте DevTools → Network → Refresh → проверьте заголовок Content-Encoding: gzip или br (Brotli).
Шаг 7: Структурированные данные Schema.org
Цель: получить rich snippets в Google.
Время выполнения: 25 минут
WordPress не добавляет Schema.org из коробки. Используйте плагин Rank Math (встроенная поддержка) или Schema Pro.
Код для добавления Article Schema вручную:
phpadd_action('wp_head', 'custom_article_schema');
function custom_article_schema() {
if (is_single()) {
global $post;
$schema = [
"@context" => "https://schema.org",
"@type" => "Article",
"headline" => get_the_title(),
"datePublished" => get_the_date('c'),
"dateModified" => get_the_modified_date('c'),
"author" => [
"@type" => "Person",
"name" => get_the_author()
],
"publisher" => [
"@type" => "Organization",
"name" => get_bloginfo('name'),
"logo" => [
"@type" => "ImageObject",
"url" => get_site_icon_url()
]
],
"image" => get_the_post_thumbnail_url($post->ID, 'full')
];
echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
}
}
add_action('wp_head', 'custom_article_schema'); function custom_article_schema() { if (is_single()) { global $post; $schema = [ "@context" => "https://schema.org", "@type" => "Article", "headline" => get_the_title(), "datePublished" => get_the_date('c'), "dateModified" => get_the_modified_date('c'), "author" => [ "@type" => "Person", "name" => get_the_author() ], "publisher" => [ "@type" => "Organization", "name" => get_bloginfo('name'), "logo" => [ "@type" => "ImageObject", "url" => get_site_icon_url() ] ], "image" => get_the_post_thumbnail_url($post->ID, 'full') ]; echo '<script type="application/ld+json">' . json_encode($schema) . '</script>'; } }
Проверка: вставьте URL в Google Rich Results Test. Должны появиться карточки Article, Breadcrumb, Organization.
Шаг 8: Внутренняя перелинковка
Цель: распределить вес страниц и улучшить навигацию.
Время выполнения: 15 минут (настройка плагина)
Плагин Link Whisper ($77, автоматически предлагает релевантные ссылки) или ручная работа.
Правило: каждая страница должна иметь минимум 3–5 внутренних ссылок. Используйте анкоры с ключами, но без переспама.
Код для автоматических related posts:
phpadd_filter('the_content', 'custom_related_posts');
function custom_related_posts($content) {
if (is_single()) {
$related = get_posts(['category__in' => wp_get_post_categories(get_the_ID()), 'numberposts' => 3, 'post__not_in' => [get_the_ID()]]);
$links = '<h3>Читайте также:</h3><ul>';
foreach ($related as $post) {
$links .= '<li><a href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a></li>';
}
$links .= '</ul>';
return $content . $links;
}
return $content;
}
add_filter('the_content', 'custom_related_posts'); function custom_related_posts($content) { if (is_single()) { $related = get_posts(['category__in' => wp_get_post_categories(get_the_ID()), 'numberposts' => 3, 'post__not_in' => [get_the_ID()]]); $links = '<h3>Читайте также:</h3><ul>'; foreach ($related as $post) { $links .= '<li><a href="' . get_permalink($post->ID) . '">' . $post->post_title . '</a></li>'; } $links .= '</ul>'; return $content . $links; } return $content; }
Шаг 9: HTTPS и безопасность
Цель: включить SSL и настроить редиректы.
Время выполнения: 10 минут
Google с 2014 года учитывает HTTPS как фактор ранжирования. В 2026 это обязательное требование.
Настройка через .htaccess:
textRewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
Проверка: убедитесь, что все ресурсы (CSS, JS, изображения) загружаются по HTTPS. Откройте DevTools → Console — не должно быть ошибок "Mixed Content".
Шаг 10: Мобильная оптимизация
Цель: пройти Google Mobile-Friendly Test.
Время выполнения: 5 минут (проверка)
Используйте адаптивную тему (любая современная тема на Elementor/Gutenberg). Проверьте viewport:
xml<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Тест: откройте Mobile-Friendly Test и вставьте URL.
Инструменты для технической SEO WordPress
Инструмент |
Назначение |
Плюсы |
Минусы |
Стоимость |
|---|---|---|---|---|
Rank Math |
SEO-плагин с техническими модулями |
Schema.org, карта сайта, canonical |
Конфликтует с Yoast |
Бесплатно / Pro $59/год |
WP Rocket |
Кэширование и минификация |
Простая настройка, CDN |
Платный, нет бесплатной версии |
$59/год |
Imagify |
Сжатие изображений в WebP |
Автоматическая конвертация |
Лимит 25 МБ/мес. на бесплатном |
$9.99/мес. |
Screaming Frog |
Аудит сайта (краулинг) |
Находит дубли, битые ссылки |
Лимит 500 URL в бесплатной версии |
£149/год |
Google Search Console |
Мониторинг индексации |
Бесплатно, данные от Google |
Задержка данных 2–3 дня |
Бесплатно |
WebPageTest |
Измерение Core Web Vitals |
Реальные устройства, waterfall |
Сложный интерфейс |
Бесплатно |
Практический кейс: интернет-магазин на WooCommerce
Ситуация: магазин детских игрушек, 500 товаров, трафик 2000 визитов/мес., 80% с мобильных.
Проблема: LCP = 4.2с, Google индексирует 1200 страниц (вместо 500), позиции падают после обновления Core Web Vitals (июнь 2025).
Решение:
Закрыли через robots.txt:
/cart/,/checkout/,/my-account/, архивы по датам.Установили WP Rocket + Imagify → LCP снизился до 2.3с.
Добавили Schema.org Product для карточек товаров через Rank Math.
Настроили canonical на фильтры (по цвету, размеру) → указали на главную страницу категории.
Результат (за 2 месяца):
Проиндексированные страницы: с 1200 до 520 (-57%)
LCP: с 4.2с до 2.3с
Органический трафик: +43% (с 2000 до 2860 визитов/мес.)
Конверсия из органики: +12% (улучшился UX за счёт скорости)
Время на внедрение: 8 часов работы SEO-специалиста + разработчика.
Типичные ошибки и как их избежать
Ошибка 1: Закрытие всего сайта через Disallow: / в robots.txt.
Решение: Проверяйте файл через Google Search Console перед публикацией. Используйте User-agent: * с конкретными директориями.
Ошибка 2: Установка 10+ SEO-плагинов, конфликтующих между собой.
Решение: Один плагин для SEO (Rank Math/Yoast), один для кэширования (WP Rocket). Больше не нужно.
Ошибка 3: Использование noindex, nofollow на важных страницах.
Решение: Проверяйте через Screaming Frog наличие meta robots на ключевых URL. Оставляйте index, follow.
Ошибка 4: Игнорирование мобильной версии.
Решение: 70% трафика идёт с телефонов. Тестируйте каждую правку на реальном устройстве, а не только в DevTools.
Ошибка 5: Отсутствие мониторинга после оптимизации.
Решение: Настройте еженедельные отчёты из Google Search Console. Отслеживайте: проиндексированные страницы, ошибки сканирования, Core Web Vitals.
FAQ
Сколько времени занимает полная техническая оптимизация WordPress?
От 6 до 12 часов чистого времени для сайта на 50–200 страниц. Для крупных проектов (1000+ страниц) — до 20 часов. Результаты видны через 2–4 недели после переиндексации Google.
Можно ли обойтись без платных плагинов?
Да, но потребуется больше времени на настройку. Вместо WP Rocket используйте W3 Total Cache + Autoptimize (бесплатно). Вместо Rank Math Pro достаточно бесплатной версии для базовой SEO.
Какой хостинг лучше для SEO WordPress?
VPS или облачный хостинг с поддержкой HTTP/3, Redis, Brotli. Рекомендую: Timeweb (от 300 руб./мес.), REG.RU Cloud (от 500 руб./мес.), DigitalOcean ($12/мес.). Shared-хостинг (Beget, Hostland) подходит только для блогов до 10 000 визитов/мес.
Как часто обновлять XML-карту сайта?
Автоматически при публикации нового контента (плагины делают это сами). Вручную пинговать Google не нужно — Search Console получает уведомления автоматически.
Нужно ли закрывать категории от индексации?
Нет, если категории содержат уникальные описания (200+ слов) и полезны пользователям. Закрывайте только пустые категории или с дублирующимся контентом.
Что важнее: скорость загрузки или структурированные данные?
Скорость — прямой фактор ранжирования с 2021 года (Page Experience Update). Структурированные данные влияют на CTR через rich snippets, но не на позиции напрямую. Приоритет: сначала скорость, потом Schema.org.
Как проверить, что robots.txt работает правильно?
Google Search Console → "Инструменты и отчёты" → "Тестирование robots.txt". Введите URL и убедитесь, что важные страницы разрешены, а служебные — заблокированы.
Выводы
Техническая SEO для WordPress — это не установка 5 плагинов и надежда на чудо. Это системная работа с индексацией, скоростью, структурой данных и мониторингом. За 8 лет я провёл 300+ аудитов, и во всех случаях правильная настройка давала рост трафика на 30–50% без допконтента.
Три главных вывода:
Закрывайте мусор от индексации — robots.txt + meta robots. Google не должен тратить краулинговый бюджет на
/wp-admin/и архивы по датам.Скорость критична — в 2026 году LCP > 3с = потеря 40% трафика. Используйте кэширование, WebP, CDN.
Schema.org обязателен — rich snippets увеличивают CTR на 20–40%. Это конкурентное преимущество.
Начните с чеклиста выше. Первые результаты увидите через 2–4 недели. Если нужна помощь — пишите в комментарии, разберём ваш кейс.