Skip to main content

Работа с провайдерами sitemap

В контексте WordPress провайдер sitemap — это класс, который отвечает за генерацию определённого набора URL внутри XML-карты сайта.

Проще говоря:

Провайдер = источник данных для sitemap.

📌 Как это устроено внутри WordPress

Начиная с версии 5.5 в WordPress появился класс:

WP_Sitemaps

Он управляет всей системой sitemap и подключает провайдеры.

Каждый провайдер отвечает за свой тип данных.

По умолчанию есть три:

Провайдер Что генерирует
posts записи, страницы, custom post types
taxonomies категории, теги, кастомные таксономии
users архивы авторов

🔎 Пример структуры


/wp-sitemap.xml

Это индекс. В нём ссылки на:


/wp-sitemap-posts-post-1.xml /wp-sitemap-taxonomies-category-1.xml /wp-sitemap-users-1.xml

Каждый из этих файлов формируется отдельным провайдером.


📦 Что делает провайдер технически

Каждый провайдер — это класс, наследующий:


WP_Sitemaps_Provider

Он обязан реализовать два метода:


get_url_list( $page_num, $subtype ) get_max_num_pages( $subtype )
🔹 get_url_list()

Возвращает массив URL для текущей страницы sitemap.

🔹 get_max_num_pages()

Возвращает количество страниц sitemap (если URL много).


🧠 Простая аналогия

Представьте sitemap как каталог:

  • Индекс — оглавление

  • Провайдер — глава каталога

  • get_url_list() — список страниц в главе


💡 Почему это удобно

Провайдеры позволяют:

  • отключить стандартные данные

  • добавить собственные URL

  • изменить логику выборки

  • добавить кастомный sitemap (например, для API или фильтров)

✅ Отключаем стандартные провайдеры

Добавьте в functions.php или в плагин:


add_filter('wp_sitemaps_add_provider', function ($provider, $name) { 
  // отключаем стандартные: posts, taxonomies, users 
  if (in_array($name, ['posts', 'taxonomies', 'users'])) { 
    return false; 
  } 
  return $provider; 
}, 10, 2); 
Теперь /wp-sitemap.xml станет пустым