Автоматический 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 и выбрать подходящее решение для вашего проекта.