Sitemaps API

Framework for generating XML sitemaps in WordPress.

Since: 5.5.0
Source: wp-includes/sitemaps.php, wp-includes/sitemaps/

Components

ComponentDescription
functions.mdCore retrieval and registration functions
class-wp-sitemaps.mdMain sitemap controller
class-wp-sitemaps-provider.mdAbstract base provider class
class-wp-sitemaps-registry.mdProvider registry
hooks.mdActions and filters

Built-in Providers

ProviderClassObject TypeDescription
postsWP_Sitemaps_PostspostPublic post types
taxonomiesWP_Sitemaps_TaxonomiestermPublic taxonomies
usersWP_Sitemaps_UsersuserAuthors with published posts

Architecture

WP_Sitemaps (main controller)
    ├── WP_Sitemaps_Registry (provider management)
    │       └── WP_Sitemaps_Provider[] (posts, taxonomies, users)
    ├── WP_Sitemaps_Index (index generation)
    ├── WP_Sitemaps_Renderer (XML output)
    └── WP_Sitemaps_Stylesheet (XSL styling)

URL Structure

URLDescription
/wp-sitemap.xmlIndex listing all sitemaps
/wp-sitemap-posts-post-1.xmlPosts sitemap page 1
/wp-sitemap-posts-page-1.xmlPages sitemap page 1
/wp-sitemap-taxonomies-category-1.xmlCategories sitemap page 1
/wp-sitemap-users-1.xmlUsers sitemap page 1
/wp-sitemap.xslStylesheet for sitemaps
/wp-sitemap-index.xslStylesheet for index

Registration Flow

wp_sitemaps_init action
    └── wp_register_sitemap_provider()
            └── WP_Sitemaps_Registry::add_provider()
                    └── Store WP_Sitemaps_Provider instance

Request Flow

/wp-sitemap.xml
    └── template_redirect
            └── WP_Sitemaps::render_sitemaps()
                    ├── (index) WP_Sitemaps_Index::get_sitemap_list()
                    │       └── WP_Sitemaps_Renderer::render_index()
                    └── (provider) WP_Sitemaps_Provider::get_url_list()
                            └── WP_Sitemaps_Renderer::render_sitemap()

Robots.txt Integration

The sitemap index URL is automatically added to robots.txt for public sites:

Sitemap: https://example.com/wp-sitemap.xml