Для современных сайтов на WordPress карта сайта (Sitemap) — важный элемент SEO и удобства индексирования в поисковых системах. Особенно это критично для сетевых установок WordPress Multisite, где необходимо организовать корректное создание и обновление Sitemap для каждой подсайта в сети. В этой статье подробно разберем, как автоматизировать создание Sitemap в WordPress с поддержкой Multisite, какие плагины использовать, а также рассмотрим пример собственного решения с кодом.
Почему важно иметь Sitemap в WordPress Multisite
Sitemap помогает поисковым системам быстро понять структуру сайта, индексировать новые и обновленные страницы, а также улучшает ранжирование. В мультисайтовой среде каждая отдельная часть сети — это по сути самостоятельный сайт с уникальной структурой и контентом. Автоматическое создание Sitemap для каждого сайта мультисети позволяет:
- Упростить работу поисковиков с множеством подсайтов;
- Избежать дублирования контента и ошибок индексации;
- Автоматически обновлять карту сайта при добавлении новых записей и страниц;
- Управлять настройками карты сайта централизованно.
Без автоматизации администратору придется вручную создавать и обновлять Sitemap для каждого сайта, что неудобно и неэффективно.
Плагины для автоматического создания Sitemap с поддержкой Multisite
1. Yoast SEO
Yoast SEO — самый популярный SEO-плагин, который умеет автоматически генерировать Sitemap для каждого сайта в мультисети. Он создает XML-карту сайта, которая обновляется при добавлении новых записей, страниц, категорий и так далее. Для мультисайта достаточно активировать плагин в каждой подсайте, и Yoast создаст Sitemap для нее по адресу https://example.com/sitemap_index.xml.
Однако Yoast не предоставляет централизованного управления Sitemap для всей сети сразу, что может быть неудобно при большом количестве сайтов.
2. Google XML Sitemaps
Этот плагин также поддерживает мультисайтовые установки и генерирует карты сайта в XML-формате. Он более легкий, чем Yoast, и позволяет гибко настраивать включение/исключение определенных типов контента, приоритеты и частоту обновлений.
Для активации на мультисайте нужно включить плагин в каждой подсайте и настроить индивидуально.
3. WPGPT Sitemap (пример из WPShop)
Если вы используете плагины WPShop, можно рассмотреть специализированные решения, которые могут интегрироваться с вашим сайтом и обеспечивать генерацию Sitemap с учетом особенностей вашего контента и мультисайта.
Например, плагин WPGPT может помочь в автоматизации генерации контента и Sitemap с расширенными возможностями.
Как сделать собственный генератор Sitemap с поддержкой Multisite
Если готовые плагины не подходят, можно написать собственный генератор Sitemap, который будет работать автоматически для всей сети сайтов. Рассмотрим пример функции, которая создаст Sitemap для каждого сайта мультисети и сохранит их в отдельные файлы.
Основные задачи скрипта:
- Пройтись по всем сайтам сети;
- Для каждого сайта получить список опубликованных записей и страниц;
- Сформировать XML-карту сайта с учетом стандартов;
- Сохранить файл Sitemap в корне каждого подсайта или в общей папке.
function wpfactory_generate_sitemap_for_multisite() {
if (!is_multisite()) {
return;
}
$sites = get_sites();
foreach ($sites as $site) {
switch_to_blog($site->blog_id);
$posts = get_posts(array('post_type' => array('post','page'), 'post_status' => 'publish', 'numberposts' => -1));
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>\n';
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n';
foreach ($posts as $post) {
$permalink = get_permalink($post->ID);
$lastmod = get_post_modified_time('c', true, $post->ID);
$sitemap .= "<url>\n";
$sitemap .= " <loc>" . esc_url($permalink) . "</loc>\n";
$sitemap .= " <lastmod>" . esc_html($lastmod) . "</lastmod>\n";
$sitemap .= "</url>\n";
}
$sitemap .= '</urlset>';
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . "/sitemap-" . $site->blog_id . ".xml";
file_put_contents($file_path, $sitemap);
restore_current_blog();
}
}
// Запускаем функцию по расписанию или вручную
wpfactory_generate_sitemap_for_multisite();Этот пример демонстрирует базовый принцип. Для практического использования рекомендуем дополнительно добавить обработку ошибок, кэширование, уведомления и интеграцию с robots.txt.
Автоматизация обновления Sitemap с помощью WP-Cron
Чтобы Sitemap всегда был актуален, полезно запускать его генерацию по расписанию с помощью WP-Cron. Пример добавления задачи:
function wpfactory_schedule_sitemap_generation() {
if (!wp_next_scheduled('wpfactory_generate_sitemap_event')) {
wp_schedule_event(time(), 'hourly', 'wpfactory_generate_sitemap_event');
}
}
add_action('wp', 'wpfactory_schedule_sitemap_generation');
add_action('wpfactory_generate_sitemap_event', 'wpfactory_generate_sitemap_for_multisite');Так Sitemap будет обновляться каждый час автоматически, без участия администратора.
Как интегрировать Sitemap с robots.txt
После создания Sitemap важно указать его в файле robots.txt, чтобы поисковики знали, где искать карту сайта. Для мультисайтовой установки можно добавить динамический фильтр:
function wpfactory_robots_sitemap($output, $public) {
if (is_multisite()) {
$upload_dir = wp_upload_dir();
$sitemap_url = $upload_dir['baseurl'] . "/sitemap-" . get_current_blog_id() . ".xml";
$output .= "\nSitemap: " . esc_url($sitemap_url) . "\n";
}
return $output;
}
add_filter('robots_txt', 'wpfactory_robots_sitemap', 10, 2);Этот код добавит ссылку на Sitemap в robots.txt для каждого подсайта.
Итоги и рекомендации
Автоматическое создание Sitemap для WordPress Multisite — важная задача, повышающая индексируемость и SEO. Используйте проверенные плагины, такие как Yoast SEO или Google XML Sitemaps, если нужна простота. Для более гибкой и централизованной автоматизации можно написать собственное решение на PHP с интеграцией в WP-Cron и robots.txt.
Если хотите расширить функционал, обратите внимание на плагины из WPShop, которые могут помочь с SEO и управлением мультисайтом.