Что такое XML Sitemap и зачем он нужен в WordPress
XML Sitemap – это файл, который содержит структурированный список ссылок на страницы вашего сайта, помогающий поисковым системам лучше индексировать контент. Для WordPress создание и настройка sitemap особенно важна, если у вас много страниц, кастомных типов записей (Custom Post Types), таксономий или сложная структура сайта.
Стандартные плагины вроде Yoast SEO или Rank Math создают sitemap автоматически, но часто они не учитывают специфические требования проекта или не дают гибкости в управлении контентом для индексации. В этой статье мы рассмотрим, как создать уникальный XML Sitemap с кастомными настройками, и приведём примеры кода для решения конкретных задач.
Основные проблемы стандартных Sitemap и их решения
Часто стандартные sitemap имеют следующие ограничения:
- Отсутствие поддержки кастомных типов записей или таксономий.
- Нет фильтрации по определённым параметрам, например, исключение черновиков, товаров из категории «архив» и т.п.
- Проблемы с приоритетами и частотой обновления (priority и changefreq).
Для решения этих проблем можно использовать либо плагины с расширенными настройками, либо написать свой sitemap с помощью хуков WordPress.
Использование плагинов для создания кастомного Sitemap
Плагин Clearfy Pro
Clearfy Pro – мощный инструмент для оптимизации WordPress, который позволяет гибко настраивать sitemap. В частности, он поддерживает исключение ненужных страниц, настройку приоритетов и частоты обновления.
Для активации расширенных настроек sitemap в Clearfy Pro:
- Установите и активируйте плагин Clearfy Pro.
- Перейдите в настройки SEO → Sitemap.
- Выберите нужные типы записей и таксономии для включения или исключения из sitemap.
- Настройте приоритеты для разных разделов сайта.
Плагин WPGPT для генерации динамических sitemap
Если сайт использует много динамического контента и кастомных запросов, можно применить WPGPT, который позволяет создавать sitemap на основе GPT-алгоритмов и фильтровать URL по специфическим признакам.
Это полезно, если нужно автоматически обновлять sitemap при добавлении нового контента без нагрузки на сервер.
Написание собственного уникального XML Sitemap с помощью кода
Если вам нужно тонко контролировать содержимое sitemap, можно создать свой файл sitemap.php и подключить его через rewrite rules в WordPress.
Шаг 1. Создание функции для вывода sitemap
function wpinfo_generate_custom_sitemap() {
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">';
$args = [
'post_type' => ['post', 'page', 'product'], // кастомизируйте типы записей
'post_status' => 'publish',
'posts_per_page' => -1
];
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
echo '<url>';
echo '<loc>' . get_permalink() . '</loc>';
echo '<lastmod>' . get_the_modified_date('c') . '</lastmod>';
echo '<changefreq>weekly</changefreq>';
echo '<priority>0.8</priority>';
echo '</url>';
}
wp_reset_postdata();
echo '</urlset>';
exit;
}Шаг 2. Добавление rewrite правила для sitemap.xml
function wpinfo_add_sitemap_rewrite_rule() {
add_rewrite_rule('^custom-sitemap\.xml$', 'index.php?custom_sitemap=1', 'top');
}
add_action('init', 'wpinfo_add_sitemap_rewrite_rule');
function wpinfo_add_query_var($vars) {
$vars[] = 'custom_sitemap';
return $vars;
}
add_filter('query_vars', 'wpinfo_add_query_var');
function wpinfo_template_redirect() {
if (get_query_var('custom_sitemap')) {
wpinfo_generate_custom_sitemap();
}
}
add_action('template_redirect', 'wpinfo_template_redirect');Шаг 3. Сброс пермалинков
После добавления кода нужно зайти в настройки → постоянные ссылки и просто сохранить изменения, чтобы обновить правила перезаписи.
Расширение функционала: добавление кастомных таксономий и фильтрация по мета-полям
Чтобы включить в sitemap кастомные таксономии, например «product_category», и исключить записи с определённым мета-ключом, дополните аргументы WP_Query:
$args = [
'post_type' => ['post', 'page', 'product'],
'post_status' => 'publish',
'posts_per_page' => -1,
'tax_query' => [
[
'taxonomy' => 'product_category',
'field' => 'slug',
'terms' => ['archive'],
'operator' => 'NOT IN'
]
],
'meta_query' => [
[
'key' => '_exclude_from_sitemap',
'compare' => 'NOT EXISTS'
]
]
];Таким образом, вы исключите из sitemap записи в категории «archive» и те, в которых установлен мета-ключ _exclude_from_sitemap.
Выводы и рекомендации
Уникальный XML Sitemap, созданный с учётом специфики проекта, помогает улучшить индексацию сайта и повысить позиции в поисковой выдаче. Если вы не хотите писать код, воспользуйтесь плагинами Clearfy Pro или расширенными настройками WPGPT.
Если же нужен полный контроль, создайте свой sitemap с помощью WP_Query и rewrite правил, как показано в примерах выше. Это позволит точно управлять, какие страницы и записи попадут в sitemap, с какой частотой и приоритетом.
Не забывайте регулярно обновлять sitemap и сообщать о его изменениях в Google Search Console и других поисковых системах.