WP_Sitemaps_Registry

Registry for managing sitemap providers.

Source: wp-includes/sitemaps/class-wp-sitemaps-registry.php
Since: 5.5.0

Overview

Manages registration and retrieval of sitemap providers. Accessed via WP_Sitemaps::$registry.

Properties

Property Type Visibility Description
$providers WP_Sitemaps_Provider[] private Registered providers keyed by name

Methods

add_provider()

Adds a new sitemap provider.

public function add_provider( string $name, WP_Sitemaps_Provider $provider ): bool
Parameter Type Description
$name string Provider name
$provider WP_Sitemaps_Provider Provider instance

Returns: true on success, false if name exists or provider filtered out.

Hooks:

apply_filters( 'wp_sitemaps_add_provider', WP_Sitemaps_Provider $provider, string $name )

Return a non-WP_Sitemaps_Provider value to prevent registration.

Example:

// Register custom provider
$registry->add_provider( 'products', new My_Products_Provider() );

// Prevent a provider from being registered
add_filter( 'wp_sitemaps_add_provider', function( $provider, $name ) {
    if ( 'users' === $name ) {
        return false; // Block users sitemap
    }
    return $provider;
}, 10, 2 );

get_provider()

Returns a single registered provider.

public function get_provider( string $name ): ?WP_Sitemaps_Provider
Parameter Type Description
$name string Provider name

Returns: WP_Sitemaps_Provider or null if not found.

Example:

$posts_provider = $registry->get_provider( 'posts' );
if ( $posts_provider ) {
    $url_list = $posts_provider->get_url_list( 1, 'post' );
}

get_providers()

Returns all registered providers.

public function get_providers(): WP_Sitemaps_Provider[]

Returns: Array of WP_Sitemaps_Provider instances keyed by name.

Example:

$providers = $registry->get_providers();

foreach ( $providers as $name => $provider ) {
    $entries = $provider->get_sitemap_entries();
    echo "{$name}: " . count( $entries ) . " sitemapsn";
}

Usage Examples

Access the Registry

$sitemaps = wp_sitemaps_get_server();
$registry = $sitemaps->registry;

// List all providers
$providers = $registry->get_providers();
// array( 'posts' => WP_Sitemaps_Posts, 'taxonomies' => WP_Sitemaps_Taxonomies, 'users' => WP_Sitemaps_Users )

Remove a Built-in Provider

add_filter( 'wp_sitemaps_add_provider', function( $provider, $name ) {
    // Disable users sitemap
    if ( 'users' === $name ) {
        return false;
    }
    return $provider;
}, 10, 2 );

Replace a Provider

add_filter( 'wp_sitemaps_add_provider', function( $provider, $name ) {
    if ( 'posts' === $name ) {
        return new My_Custom_Posts_Provider();
    }
    return $provider;
}, 10, 2 );