Как создать sitemap XML в WordPress без плагина

Sitemap обязателен, если вы заботитесь о видимости в поиске: он упрощает краулинг и индексацию сайта. Следуя этому руководству, вы научитесь создавать sitemap XML вручную, вставлять код в тему и регистрировать файл в Google Search Console.
Содержание
- Что такое XML‑sitemap?
- Как создать sitemap в WordPress вручную
- Вставка кода в редактор темы
- Отправка sitemap в Google
- Когда этот метод не подходит
- Альтернативные подходы
- Короткая методология действий
- Чек‑листы по ролям
- Критерии приёмки
- Безопасность и приватность
- Часто задаваемые вопросы
Что такое XML‑sitemap?
XML‑sitemap — это файл в формате XML, который перечисляет важные URL сайта и сопровождает их метаданными: дату последнего изменения, частоту изменения и приоритет. По протоколу Sitemap поисковые системы понимают структуру сайта и быстрее находят страницы.
Определение: XML‑sitemap — машиночитаемый план сайта, упрощающий индексацию для поисковых систем.
Как создать sitemap в WordPress вручную
Идея простая: получить список опубликованных постов и страниц, сформировать корректный XML и записать его в файл в корне сайта (например, custom-sitemap.xml). Ниже — готовая PHP‑функция, которую можно вставить в файл functions.php вашей темы.
// Function to create a sitemap.xml file in the root directory of the site
// You can uncomment the following lines if you wish to trigger the sitemap generation upon publishing a post or page
// add_action("publish_post", "eg_create_sitemap");
// add_action("publish_page", "eg_create_sitemap");
// Trigger sitemap generation whenever a post is saved
add_action("save_post", "eg_create_sitemap");
function eg_create_sitemap() {
// Time offset handling
$gmt_offset_raw = str_replace('-', '', get_option('gmt_offset'));
if ($gmt_offset_raw === '') {
$tempo = '+00:00';
} else {
if ($gmt_offset_raw < 10) {
$tempo = ($gmt_offset_raw > 0 ? '+' : '-') . '0' . ltrim(get_option('gmt_offset'), '+-');
} else {
$tempo = get_option('gmt_offset');
}
if (strlen($tempo) == 2 || strlen($tempo) == 1) {
$tempo .= ':00';
}
if ($tempo[0] !== '+' && $tempo[0] !== '-') {
$tempo = '+' . $tempo;
}
}
// Fetch all published posts and pages
$postsForSitemap = get_posts(array(
'numberposts' => -1,
'orderby' => 'modified',
'post_type' => array('post', 'page'),
'post_status' => 'publish',
'order' => 'DESC'
));
// Start building XML
$sitemap = '';
$sitemap .= "\n" . '' . "\n";
// Add homepage
$sitemap .= "\t\n";
$sitemap .= "\t\t" . esc_url(home_url('/')) . " \n";
$sitemap .= "\t\t" . date("Y-m-d\TH:i:s", current_time('timestamp', 0)) . $tempo . " \n";
$sitemap .= "\t\tdaily \n";
$sitemap .= "\t\t1.0 \n";
$sitemap .= "\t \n";
// Add posts and pages
foreach ($postsForSitemap as $post) {
setup_postdata($post);
$postdate = explode(" ", $post->post_modified);
$sitemap .= "\t\n";
$sitemap .= "\t\t" . get_permalink($post->ID) . " \n";
$sitemap .= "\t\t" . $postdate[0] . 'T' . $postdate[1] . $tempo . " \n";
$sitemap .= "\t\tweekly \n";
$sitemap .= "\t\t0.5 \n";
$sitemap .= "\t \n";
}
wp_reset_postdata();
// Close urlset
$sitemap .= ' ';
// Write to file in site root
$fp = fopen(ABSPATH . "custom-sitemap.xml", 'w');
if ($fp !== false) {
fwrite($fp, $sitemap);
fclose($fp);
}
}Советы:
- Файл создаётся в корне сайта (ABSPATH). Убедитесь, что права на запись разрешают запись в корень.
- При большом количестве страниц такой подход может потребовать оптимизации (пакетная обработка, кеширование).
- Можно расширить код, чтобы исключать страницы с noindex или определённые типы постов.
Примечание: с помощью аналогичного подхода вы также можете формировать кастомные RSS‑ленты в WordPress.
Вставка кода в редактор темы
- Войдите в админ‑панель WordPress и перейдите в Внешний вид → Редактор тем (Appearance → Theme File Editor).

- Выберите файл Theme Functions (functions.php) в правой колонке.

- Прокрутите файл вниз, вставьте код и нажмите «Обновить файл».

Если админ‑панель не позволяет редактировать файлы темы, скачайте functions.php из папки wp-content/themes/your-theme, внесите правки локально и загрузите обратно через FTP/SFTP.
Отправка sitemap в Google
После создания sitemap уведомьте Google:
- Откройте Google Search Console и добавьте сайт (если ещё не добавлен). Подтвердите права.
- В меню выберите Sitemaps.

- В поле «Add a new sitemap» введите адрес вашего sitemap, например https://website.com/custom-sitemap.xml, и нажмите Submit.

После отправки консоль покажет статус обработки и возможные ошибки. Индексация может занять от нескольких часов до нескольких дней — это зависит от размера сайта и частоты краулинга.
Рекомендуем одновременно настроить Google Tag Manager и отслеживание, чтобы видеть трафик на страницах.
Когда этот метод не подходит
- Очень большой сайт (десятки тысяч URL): генерация в реальном времени может быть медленной, лучше использовать пакетную генерацию и разбиение sitemap на несколько файлов.
- Хостинги с запретом на запись в корень: если нет доступа к ABSPATH или прав на запись, используйте FTP или плагины, которые могут сохранять файлы в доступном месте.
- Нужна тонкая фильтрация/опрос сторонних постов: плагин с UI удобнее для менеджеров контента.
Альтернативные подходы
- Использовать встроенный sitemap WordPress (/wp-sitemap.xml) — простой вариант без кода.
- Плагин Yoast SEO, All in One SEO или Google XML Sitemaps — предлагают UI, фильтры и автоматическое разделение больших карт.
- Генерация sitemap на стороне CI/CD: при деплое собирать актуальный sitemap и выкладывать в корень.
Короткая методология: шаги для быстрого выполнения
- Подготовьте резервную копию functions.php.
- Вставьте код и сохраните файл (локально или через редактор темы).
- Проверьте наличие файла https://your-site/custom-sitemap.xml.
- Отправьте URL в Google Search Console → Sitemaps.
- Мониторьте ошибки в Search Console и корректируйте исключения.
Чек‑листы по ролям
Владелец сайта:
- Убедиться, что есть доступ к Search Console.
- Проверить, что sitemap указан в robots.txt или доступен по URL.
Разработчик:
- Вставить и протестировать функцию генерации.
- Настроить права файла и резервное копирование.
- Оптимизировать генерацию для больших сайтов (пагинация, кеш).
SEO‑специалист:
- Проверить, исключены ли страницы noindex.
- Настроить приоритеты и changefreq, если нужно.
- Мониторить ошибки индексирования в Search Console.
Критерии приёмки
- Файл custom-sitemap.xml доступен по адресу https://your-site/custom-sitemap.xml.
- Sitemap валидируется через Search Console без ошибок.
- Главные страницы (главная, топ‑категории, важные статьи) присутствуют в файле.
- При публикации/обновлении контента дата lastmod обновляется корректно.
Факт‑бокс: что важно помнить
- Формат: XML по протоколу sitemaps.org.
- Имя файла может быть любым, главное — корректный URL в Search Console.
- Sitemap не гарантирует индексацию, но ускоряет обнаружение страниц.
Безопасность и приватность
- Не включайте в sitemap приватные страницы или страницы с персональными данными.
- Обратите внимание на права записи в корне сайта — не давайте публичный доступ к FTP/SFTP.
- Sitemap сам по себе не раскрывает конфиденциальных данных, но делает страницы более видимыми — фильтруйте контент с меткой noindex.
Часто задаваемые вопросы
Есть ли у WordPress встроенный sitemap?
Да. Начиная с версии 5.5 WordPress автоматически создаёт базовый sitemap по адресу /wp-sitemap.xml. Для большинства сайтов этого достаточно, но если нужна кастомизация, используйте собственный файл.
Нужен ли визуальный sitemap, если есть XML?
Визуальный sitemap помогает людям ориентироваться, XML — машинам. Для крупных сайтов визуальная карта удобна для навигации и планирования структуры.
Какой лучший бесплатный плагин для sitemap?
Популярные варианты: Yoast SEO, XML Sitemap Generator for Google и All in One SEO. Они удобны при отсутствии доступа к файлам темы или когда нужна расширенная фильтрация.
Краткий словарь
- Sitemap: список URL сайта в XML для поисковых систем.
- lastmod: метка времени последнего изменения страницы.
- changefreq: предполагаемая частота изменения.
- priority: относительный приоритет URL на сайте.
Фото: Unsplash. Скриншоты — David Morelo.
Похожие материалы
Как играть в секретную мини‑игру Google Squid Game
Как сохранить файлы из iMessage в «Файлы»
Как исправить ошибки Avast 1316, 1638, 1603
Добавить музыку в видео на iPhone
Двойная загрузка Windows 11 и Ubuntu — пошагово