Для эффективного SEO вашего сайта на WordPress очень важно иметь правильно настроенный Sitemap. Плагин YoastSEO автоматически генерирует Sitemap, но как сделать его динамическим и адаптируемым под ваши нужды? В этой статье мы подробно разберём, как создать и настроить динамический Sitemap в WordPress с помощью YoastSEO, а также рассмотрим примеры кода для расширения функционала.
Что такое динамический Sitemap и зачем он нужен
Sitemap — это файл, в котором перечислены URL вашего сайта для упрощения работы поисковых систем. Динамический Sitemap — это такой Sitemap, который автоматически обновляется при добавлении, изменении или удалении контента на сайте. Это важно, чтобы поисковики всегда видели актуальную структуру сайта и быстрее индексировали новые страницы.
YoastSEO генерирует Sitemap по умолчанию и обновляет его при изменениях, но иногда необходимо кастомизировать его под особенности сайта. Например, исключить определённые типы записей, добавить пользовательские URL или изменить приоритеты страниц.
Динамический Sitemap помогает повысить скорость индексации и улучшить SEO-показатели, особенно на больших сайтах с частым обновлением контента.
Настройка стандартного Sitemap в YoastSEO
Чтобы включить или проверить стандартный Sitemap от YoastSEO, перейдите в админке WordPress в раздел SEO > Общие > Функции и убедитесь, что опция XML-карты сайта включена.
По умолчанию Sitemap доступен по адресу https://ваш-сайт.ru/sitemap_index.xml. Он содержит ссылки на Sitemap для разных типов контента (записи, страницы, категории и т.д.).
Если вы хотите исключить определённые типы записей или таксономии, это можно сделать в настройках YoastSEO в разделе SEO > Поиск в результатах > Типы записей и Таксономии.
Пример исключения пользовательского типа записи из Sitemap
Если у вас есть кастомный тип записи portfolio, и вы не хотите, чтобы его страницы попадали в Sitemap, добавьте в functions.php вашей темы следующий код:
function yoastseo_exclude_portfolio_from_sitemap($value, $post_type) {
if ('portfolio' === $post_type) {
return false;
}
return $value;
}
add_filter('wpseo_sitemap_post_type_archive_links', 'yoastseo_exclude_portfolio_from_sitemap', 10, 2);Этот фильтр отключит добавление архивов типа записи portfolio в Sitemap.
Создание своего динамического Sitemap с пользовательскими URL
Иногда необходимо добавить в Sitemap URL, которые не относятся к стандартным записям или страницам — например, ссылки на внешние ресурсы, отдельные файлы или динамические страницы. YoastSEO не поддерживает это напрямую, но можно расширить функционал с помощью хуков.
Для этого создадим свой Sitemap и добавим его в индекс YoastSEO.
Шаг 1. Добавляем свой Sitemap в индекс YoastSEO
В functions.php добавьте следующий код:
function yoastseo_add_custom_sitemap($sitemaps) {
$sitemaps['custom'] = site_url('/custom-sitemap.xml');
return $sitemaps;
}
add_filter('wpseo_sitemap_index', 'yoastseo_add_custom_sitemap');Этот код добавит ссылку на ваш кастомный Sitemap в основной индекс Sitemap YoastSEO.
Шаг 2. Создаём обработчик для custom-sitemap.xml
Добавим обработчик запроса, который будет отдавать XML с нужными URL. Добавьте в functions.php:
function yoastseo_custom_sitemap_rewrite() {
add_rewrite_rule('^custom-sitemap\.xml$', 'index.php?custom_sitemap=1', 'top');
}
add_action('init', 'yoastseo_custom_sitemap_rewrite');
function yoastseo_custom_sitemap_query_var($vars) {
$vars[] = 'custom_sitemap';
return $vars;
}
add_filter('query_vars', 'yoastseo_custom_sitemap_query_var');
function yoastseo_custom_sitemap_template() {
if (get_query_var('custom_sitemap') == 1) {
header('Content-Type: application/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// Пример добавления пользовательских URL
$urls = array(
array(
'loc' => site_url('/special-page/'),
'lastmod' => date('c', strtotime('2024-06-01')),
'changefreq' => 'monthly',
'priority' => '0.8',
),
array(
'loc' => 'https://external-site.ru/page',
'lastmod' => date('c'),
'changefreq' => 'yearly',
'priority' => '0.5',
),
);
foreach ($urls as $url) {
echo '<url>';
echo '<loc>' . esc_url($url['loc']) . '</loc>';
echo '<lastmod>' . esc_html($url['lastmod']) . '</lastmod>';
echo '<changefreq>' . esc_html($url['changefreq']) . '</changefreq>';
echo '<priority>' . esc_html($url['priority']) . '</priority>';
echo '</url>';
}
echo '</urlset>';
exit;
}
}
add_action('template_redirect', 'yoastseo_custom_sitemap_template');После добавления этого кода нужно обновить правила перезаписи (перейдите в админке в «Настройки > Постоянные ссылки» и нажмите «Сохранить изменения» без изменений).
Проверка и отладка Sitemap
После настройки динамического Sitemap важно удостовериться, что он корректно отображается и содержит все нужные URL. Для этого:
- Откройте
https://ваш-сайт.ru/sitemap_index.xmlи убедитесь, что там есть ссылка на ваш кастомный Sitemap. - Перейдите по ссылке на кастомный Sitemap
https://ваш-сайт.ru/custom-sitemap.xmlи проверьте корректность XML. - Используйте инструменты Google Search Console для отправки Sitemap и мониторинга ошибок индексации.
Если Sitemap не отображается или появляется ошибка, проверьте корректность кода, права доступа и обновите правила перезаписи.
Советы по оптимизации Sitemap
Чтобы Sitemap работал максимально эффективно:
- Разбивайте Sitemap на части, если у вас более 50 000 URL.
- Обновляйте
lastmodдля страниц, когда они изменяются. - Используйте приоритеты и частоту обновления (
priorityиchangefreq) осмысленно. - Исключайте из Sitemap страницы с низкой SEO-ценностью.
Заключение по динамическому Sitemap для WordPress с YoastSEO
Создание динамического Sitemap с помощью YoastSEO и дополнительных хуков позволяет гибко управлять структурой индексации сайта. Вы можете исключать ненужные страницы, добавлять нестандартные URL и оптимизировать под конкретные задачи SEO. Приведённые примеры кода помогут быстро внедрить эти изменения без сложных плагинов и сторонних сервисов.