Для любого сайта на WordPress важным элементом для SEO и индексации является файл Sitemap. Он помогает поисковым системам быстро находить и индексировать новые страницы и обновления. В этой статье разберем, как автоматизировать создание и обновление Sitemap в WordPress с помощью популярных плагинов и кастомных решений на PHP, а также рассмотрим практические рекомендации и примеры кода.
Что такое Sitemap и зачем его автоматизировать
Sitemap — это XML-файл, который содержит ссылки на все важные страницы сайта с дополнительной информацией (дата обновления, частота изменений, приоритет). Для WordPress с динамическим контентом важно, чтобы Sitemap всегда был актуален, иначе поисковики могут пропустить свежие материалы.
Ручное создание Sitemap неудобно и неэффективно, особенно для крупных проектов. Автоматизация позволяет гарантировать, что при добавлении или обновлении постов, страниц, категорий и других типов записей Sitemap обновится без вашего участия.
Рассмотрим разные способы реализации автоматического Sitemap для WordPress, включая готовые плагины и кастомные решения.
Популярные плагины для автоматической генерации Sitemap
Существует несколько плагинов, которые облегчают создание и обновление Sitemap:
- Yoast SEO — кроме SEO-анализа, автоматически генерирует Sitemap и обновляет его при изменениях. Прост в настройке.
- Google XML Sitemaps — классический плагин, специализирующийся только на Sitemap, с тонкими настройками для различных типов контента.
- All in One SEO Pack — комплексный SEO-пакет с функцией генерации Sitemap.
- WPGPT Sitemap Pro (если рассматривать продукты WPShop) — улучшенный плагин для кастомизации Sitemap с поддержкой нестандартных типов записей и фильтров.
Для большинства проектов подойдет Yoast SEO из-за простоты и интеграции с другими SEO-инструментами. Если нужен более тонкий контроль, можно использовать Google XML Sitemaps или WPGPT Sitemap Pro.
Как с помощью кода создать автоматический Sitemap в WordPress
Если вы хотите обойтись без плагинов, можно создать свою функцию генерации Sitemap, которая будет автоматически обновляться при публикации или обновлении записей.
Вот пример простой функции для создания Sitemap в формате XML и сохранения его в корне сайта.
function wpeditor_create_sitemap() {
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => array('post', 'page'),
'post_status' => 'publish'
));
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach ($posts as $post) {
$permalink = get_permalink($post->ID);
$modified = get_post_modified_time('c', true, $post->ID);
$sitemap .= '<url>';
$sitemap .= '<loc>' . esc_url($permalink) . '</loc>';
$sitemap .= '<lastmod>' . $modified . '</lastmod>';
$sitemap .= '<changefreq>weekly</changefreq>';
$sitemap .= '<priority>0.8</priority>';
$sitemap .= '</url>';
}
$sitemap .= '</urlset>';
$file = ABSPATH . 'sitemap.xml';
file_put_contents($file, $sitemap);
}
// Хук для обновления Sitemap при сохранении записи
add_action('save_post', 'wpeditor_create_sitemap');Эта функция собирает все опубликованные посты и страницы, формирует XML и записывает его в файл sitemap.xml в корне сайта. Хук save_post гарантирует обновление Sitemap при каждом сохранении записи.
Для расширения можно добавить другие типы записей, таксономии, а также использовать кэширование, чтобы не генерировать Sitemap слишком часто.
Расширение функционала: фильтрация и кастомизация Sitemap
Часто нужно исключить из Sitemap определённые страницы или посты, например, черновики, страницы с низким приоритетом, или добавить кастомные типы записей.
Пример фильтрации, исключающей посты по метке "noindex":
function wpeditor_create_sitemap_filtered() {
$args = array(
'numberposts' => -1,
'post_type' => array('post', 'page'),
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_wpseo_meta-robots-noindex',
'value' => '1',
'compare' => '!=',
)
)
);
$posts = get_posts($args);
// далее как в предыдущем примере
}Также можно добавить поддержку пользовательских таксономий и приоритетов, например, для продуктов WooCommerce или других кастомных типов.
Автоматизация с помощью WP-Cron
Для сайтов с низкой частотой обновлений порой лучше не генерировать Sitemap на каждое сохранение записи, а обновлять его раз в сутки или неделю через планировщик WP-Cron.
Добавим задачу для еженедельного обновления:
if (!wp_next_scheduled('wpeditor_weekly_sitemap_update')) {
wp_schedule_event(time(), 'weekly', 'wpeditor_weekly_sitemap_update');
}
add_action('wpeditor_weekly_sitemap_update', 'wpeditor_create_sitemap');Такой подход снижает нагрузку и позволяет планировать обновления в удобное время.
Рекомендации по подключению Sitemap к Google Search Console
Чтобы Sitemap начал работать, его нужно добавить в Google Search Console и другие поисковые системы. Обычно URL выглядит так: https://yourdomain.ru/sitemap.xml.
Если Sitemap генерируется плагином Yoast SEO или другим, URL может отличаться — проверьте настройки плагина.
Регулярно проверяйте статус индексации и ошибки в разделе Sitemap Search Console, чтобы убедиться, что все страницы доступны и корректно обрабатываются.
Использование WPGPT Sitemap Pro для расширенных возможностей
Если хотите более гибкое и мощное решение, обратите внимание на WPGPT Sitemap Pro. Этот плагин позволяет:
- Автоматически создавать Sitemap с поддержкой любых кастомных типов записей и таксономий.
- Фильтровать записи по мета-данным, статусу и другим параметрам.
- Интегрироваться с другими продуктами WPShop для комплексной оптимизации.
Плагин предоставляет удобный интерфейс и функции, которые сложно реализовать вручную без глубоких знаний PHP и WP API.