wpcodes.ru wordpress WP Codеs

Как создать автоматический sitemap в WordPress

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

Что такое sitemap и зачем он нужен в WordPress

Карта сайта — это файл в формате XML, который содержит список всех важных страниц сайта, их приоритет и дату последнего обновления. Поисковые системы, такие как Google и Яндекс, используют sitemap, чтобы эффективно сканировать сайт и учитывать его структуру.

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

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

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

Для большинства сайтов оптимальным решением будет использование готового плагина. Рассмотрим два популярных варианта, которые легко настраиваются и имеют расширенные функции.

1. Yoast SEO

Yoast SEO — один из самых популярных SEO-плагинов для WordPress. Он автоматически генерирует sitemap и позволяет гибко настраивать, какие типы контента включать или исключать из карты.

Чтобы активировать sitemap в Yoast SEO, нужно:

  • Установить и активировать плагин Yoast SEO.
  • Перейти в раздел SEO → Общие → Функции и включить Sitemap XML.
  • Перейти по ссылке sitemap_index.xml, чтобы проверить карту сайта.

Преимущества Yoast SEO:

  • Простота использования.
  • Автоматическое обновление sitemap при изменении контента.
  • Настройка исключений для отдельных страниц и типов записей.

2. Google XML Sitemaps

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

Основные шаги:

  • Установить и активировать Google XML Sitemaps.
  • Перейти в настройки плагина и указать нужные параметры.
  • Проверить sitemap по адресу sitemap.xml.

Преимущества:

  • Поддержка уведомлений поисковых систем (ping).
  • Гибкая настройка включаемых элементов.
  • Минимальная нагрузка на сервер.

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

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

Ниже приведен пример простого плагина, который создает sitemap по адресу /custom-sitemap.xml и выводит в нем все стандартные записи и страницы.

<?php
/*
Plugin Name: WPCodes Custom Sitemap
Description: Автоматический sitemap с кастомной логикой
Version: 1.0
Author: WPCodes
*/

add_action('init', 'wpcodes_register_sitemap_endpoint');
function wpcodes_register_sitemap_endpoint() {
    add_rewrite_rule('^custom-sitemap\.xml$', 'index.php?custom_sitemap=1', 'top');
}

add_filter('query_vars', 'wpcodes_add_query_vars');
function wpcodes_add_query_vars($vars) {
    $vars[] = 'custom_sitemap';
    return $vars;
}

add_action('template_redirect', 'wpcodes_custom_sitemap_template');
function wpcodes_custom_sitemap_template() {
    if (get_query_var('custom_sitemap')) {
        header('Content-Type: application/xml; charset=' . get_bloginfo('charset'), true);
        echo wpcodes_generate_sitemap();
        exit;
    }
}

function wpcodes_generate_sitemap() {
    $posts = get_posts(array(
        'numberposts' => -1,
        'post_type' => array('post', 'page'),
        'post_status' => 'publish',
    ));

    $sitemap = '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>';
    $sitemap .= "\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";

    foreach ($posts as $post) {
        $permalink = get_permalink($post->ID);
        $modified = mysql2date('Y-m-d\TH:i:sP', $post->post_modified_gmt, false);
        $sitemap .= "  <url>\n";
        $sitemap .= "    <loc>" . esc_url($permalink) . "</loc>\n";
        $sitemap .= "    <lastmod>" . $modified . "</lastmod>\n";
        $sitemap .= "    <changefreq>weekly</changefreq>\n";
        $sitemap .= "    <priority>0.8</priority>\n";
        $sitemap .= "  </url>\n";
    }

    $sitemap .= "</urlset>";
    return $sitemap;
}

// После добавления плагина необходимо обновить правила перезаписи, например, через вызов flush_rewrite_rules(); один раз.
?>

Этот код создает endpoint /custom-sitemap.xml, генерирующий XML с URL всех опубликованных записей и страниц. Вы можете расширить функцию wpcodes_generate_sitemap(), добавляя кастомные типы записей, таксономии и логику фильтрации.

Расширение кастомного sitemap: добавление кастомных типов записей и таксономий

Чтобы включить, например, тип записи product и таксономию product_cat, измените параметры запроса и добавьте дополнительные блоки генерации URL:

function wpcodes_generate_sitemap() {
    $post_types = array('post', 'page', 'product');
    $posts = get_posts(array(
        'numberposts' => -1,
        'post_type' => $post_types,
        'post_status' => 'publish',
    ));

    $sitemap = '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?>';
    $sitemap .= "\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";

    foreach ($posts as $post) {
        $permalink = get_permalink($post->ID);
        $modified = mysql2date('Y-m-d\TH:i:sP', $post->post_modified_gmt, false);
        $sitemap .= "  <url>\n";
        $sitemap .= "    <loc>" . esc_url($permalink) . "</loc>\n";
        $sitemap .= "    <lastmod>" . $modified . "</lastmod>\n";
        $sitemap .= "    <changefreq>weekly</changefreq>\n";
        $sitemap .= "    <priority>0.8</priority>\n";
        $sitemap .= "  </url>\n";
    }

    // Можно добавить категории товаров
    $terms = get_terms(array(
        'taxonomy' => 'product_cat',
        'hide_empty' => true,
    ));

    if (!is_wp_error($terms)) {
        foreach ($terms as $term) {
            $term_link = get_term_link($term);
            if (!is_wp_error($term_link)) {
                $sitemap .= "  <url>\n";
                $sitemap .= "    <loc>" . esc_url($term_link) . "</loc>\n";
                $sitemap .= "    <changefreq>weekly</changefreq>\n";
                $sitemap .= "    <priority>0.6</priority>\n";
                $sitemap .= "  </url>\n";
            }
        }
    }

    $sitemap .= "</urlset>";
    return $sitemap;
}

SEO-оптимизация sitemap и автоматическое обновление

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

Для автоматического обновления можно использовать хуки WordPress, например, save_post, чтобы сбрасывать кеш или триггерить генерацию заново:

add_action('save_post', 'wpcodes_clear_sitemap_cache');
function wpcodes_clear_sitemap_cache($post_id) {
    // Логика очистки или обновления кеша карты сайта
}

Также полезно отправлять уведомления поисковым системам (ping) после обновления sitemap. Плагины вроде Google XML Sitemaps делают это автоматически.

Использование плагина Clearfy Pro для управления sitemap

Если вы пользуетесь Clearfy Pro, в нем есть удобный модуль управления sitemap. Он позволяет быстро включать/выключать типы записей, исключать отдельные страницы и оптимизировать sitemap под ваши нужды без лишнего кода.

Для активации:

  • Установите Clearfy Pro.
  • В разделе «SEO» активируйте модуль Sitemap.
  • Настройте включаемый контент и параметры.

Этот способ подходит, если вы хотите получить расширенные возможности без разработки собственного функционала.

Выводы и рекомендации

• Для большинства сайтов подойдет использование Yoast SEO или Google XML Sitemaps — они просты и надежны.
• Если нужен уникальный sitemap с кастомной логикой, создайте собственный генератор через endpoint и PHP-код.
• Не забывайте про обновление sitemap и уведомление поисковиков.
• Плагины типа Clearfy Pro помогают получить гибкое управление sitemap без программирования.

Используйте приведенные примеры кода и рекомендации, чтобы оптимизировать свой WordPress-сайт и улучшить индексацию в поисковых системах.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее