Как создать автоматический sitemap в WordPress с помощью кода и плагинов

Автоматический sitemap (карта сайта) — важный элемент для SEO и удобства индексации страниц поисковыми системами. В WordPress существует несколько способов создания sitemap: с помощью плагинов или вручную через код. В этой статье разберём оба варианта, а также рассмотрим лучшие практики и примеры реализации.

Зачем нужен sitemap и как он работает в WordPress

Sitemap — это XML-файл, который содержит перечень всех страниц сайта, постов, категорий и других объектов, которые должны индексироваться поисковыми системами. Он помогает поисковым роботам быстрее и точнее ориентироваться на сайте, что улучшает видимость и позиции в выдаче.

Начиная с версии WordPress 5.5, ядро уже содержит базовую функцию генерации sitemap по адресу /wp-sitemap.xml. Однако стандартный sitemap ограничен по функционалу и не всегда подходит для сложных сайтов с большим количеством типов контента или кастомных настроек.

Поэтому часто возникает задача создать более гибкий и продвинутый sitemap, который можно настроить под свои нужды.

Создание sitemap с помощью популярных плагинов

Для большинства проектов достаточно использовать проверенные плагины, которые берут на себя создание и обновление sitemap, а также интеграцию с Google Search Console и другими сервисами.

Yoast SEO — универсальный SEO-плагин с функцией sitemap

Yoast SEO автоматически генерирует sitemap для всех типов записей, таксономий и даже пользовательских типов постов. Плагин позволяет управлять, какие разделы включать в карту сайта, и исключать ненужные.

Основные преимущества:

  • Автоматическое обновление sitemap при публикации новых записей;
  • Возможность исключать отдельные страницы или типы записей;
  • Поддержка мультиязычности и кастомных типов контента;
  • Интеграция с Google Search Console через панель плагина.

Чтобы включить sitemap в Yoast SEO, достаточно активировать плагин и перейти в раздел SEO > Общие > Функции, где есть переключатель для включения sitemap.

Google XML Sitemaps — простой специализированный плагин

Если нужен только sitemap без дополнительных SEO-функций, можно использовать плагин Google XML Sitemaps. Он генерирует карту сайта, поддерживает уведомление поисковых систем о новых изменениях и прост в настройке.

Основные возможности:

  • Поддержка всех типов контента WordPress;
  • Настройка приоритетов и частоты обновления;
  • Автоматическое уведомление поисковых систем;
  • Легкий и не нагружает сайт.

Создание кастомного sitemap с помощью кода

Если по каким-то причинам плагины не подходят, например, из-за специфики проекта или требований к производительности, можно реализовать sitemap с помощью кастомного PHP-кода.

Рассмотрим пример функции wp1_generate_sitemap(), которая создаёт XML-файл с картой сайта из опубликованных записей и страниц.

<?php
function wp1_generate_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 = array(
        'post_type' => array('post', 'page'),
        'post_status' => 'publish',
        'posts_per_page' => -1
    );
    $query = new WP_Query($args);

    while ($query->have_posts()) {
        $query->the_post();
        $url = get_permalink();
        $date = get_the_modified_date('c');

        echo '<url>';
        echo '<loc>' . esc_url($url) . '</loc>';
        echo '<lastmod>' . esc_html($date) . '</lastmod>';
        echo '<changefreq>weekly</changefreq>';
        echo '<priority>0.8</priority>';
        echo '</url>';
    }
    wp_reset_postdata();

    echo '</urlset>';
    exit;
}

add_action('template_redirect', function() {
    if ($_SERVER['REQUEST_URI'] === '/custom-sitemap.xml') {
        wp1_generate_sitemap();
    }
});
?>

Этот код при обращении к адресу https://your-site.ru/custom-sitemap.xml выведет XML-карту сайта с постами и страницами. Вы можете расширить логику, добавив кастомные типы записей, таксономии или фильтры.

Пояснения к коду

1. header('Content-Type: application/xml') — отправляем правильный заголовок для XML.

2. Через WP_Query получаем все опубликованные записи и страницы.

3. Для каждой записи выводим URL, дату последнего изменения, частоту изменения и приоритет.

4. Используем хук template_redirect, чтобы отлавливать запрос по нужному URL и выводить sitemap без загрузки темы.

Дополнительные советы и лучшие практики

Кеширование sitemap

Генерация sitemap на лету может создавать нагрузку на сервер, особенно при большом количестве записей. Для этого рекомендуется реализовать кеширование с помощью Transients API или использовать кеш плагинов. Например, можно сохранять сгенерированный XML в файл или кеш в базе и обновлять раз в сутки.

Исключение ненужных страниц

В sitemap не стоит добавлять страницы с низкой ценностью для SEO, например, страницы входа, корзины, оформления заказа, черновики, архивы и т.п. Это можно сделать как через параметры WP_Query или фильтры, так и через настройки плагинов.

Интеграция с Google Search Console

После создания sitemap важно добавить его URL в Google Search Console и другие поисковые системы, чтобы ускорить индексацию и получать статистику по сканированию.

Пример расширенного кода с исключением и добавлением кастомных типов

Добавим в sitemap кастомный тип поста product и исключим страницы с определёнными ID.

<?php
function wp1_generate_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">';

    $excluded_ids = array(10, 25, 42); // ID страниц для исключения

    $args = array(
        'post_type' => array('post', 'page', 'product'),
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'post__not_in' => $excluded_ids
    );

    $query = new WP_Query($args);

    while ($query->have_posts()) {
        $query->the_post();
        $url = get_permalink();
        $date = get_the_modified_date('c');

        echo '<url>';
        echo '<loc>' . esc_url($url) . '</loc>';
        echo '<lastmod>' . esc_html($date) . '</lastmod>';
        echo '<changefreq>weekly</changefreq>';
        echo '<priority>0.7</priority>';
        echo '</url>';
    }
    wp_reset_postdata();

    echo '</urlset>';
    exit;
}

add_action('template_redirect', function() {
    if ($_SERVER['REQUEST_URI'] === '/custom-sitemap.xml') {
        wp1_generate_sitemap();
    }
});
?>

Таким образом, вы контролируете, что именно попадает в sitemap, и можете легко обновлять логику под свои задачи.

Заключение по теме sitemap в WordPress

Для большинства пользователей оптимальным решением будет использование популярных плагинов, таких как Yoast SEO или Google XML Sitemaps. Они обеспечивают автоматическое обновление, гибкие настройки и совместимость с поисковыми системами.

Если же необходим индивидуальный подход, можно написать свой sitemap с помощью PHP и WordPress API, получая полный контроль над содержимым и производительностью.

Не забывайте также про кеширование и исключение ненужных страниц из карты сайта — это поможет улучшить SEO и снизить нагрузку на сервер.

Для удобства рекомендуем ознакомиться с плагинами на WPSHOP.ru и выбрать подходящее решение для вашего проекта.

Как автоматически отключать плагины в WordPress при возникновении ошибок
08.03.2026
Как правильно удалить кэш Redis в WordPress: практическое руководство
13.01.2026
Как создать настройку в админ панели WordPress
02.12.2025
Как изменить способ авторизации в WordPress через плагин
31.03.2026
Как настроить автоматическое удаление старых записей WordPress по типу и дате
11.04.2026