diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-includes/sitemaps/class-wp-sitemaps-registry.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/sitemaps/class-wp-sitemaps-registry.php Tue Dec 15 13:49:49 2020 +0100 @@ -0,0 +1,85 @@ +providers[ $name ] ) ) { + return false; + } + + /** + * Filters the sitemap provider before it is added. + * + * @since 5.5.0 + * + * @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider. + * @param string $name Name of the sitemap provider. + */ + $provider = apply_filters( 'wp_sitemaps_add_provider', $provider, $name ); + if ( ! $provider instanceof WP_Sitemaps_Provider ) { + return false; + } + + $this->providers[ $name ] = $provider; + + return true; + } + + /** + * Returns a single registered sitemap provider. + * + * @since 5.5.0 + * + * @param string $name Sitemap provider name. + * @return WP_Sitemaps_Provider|null Sitemap provider if it exists, null otherwise. + */ + public function get_provider( $name ) { + if ( ! isset( $this->providers[ $name ] ) ) { + return null; + } + + return $this->providers[ $name ]; + } + + /** + * Returns all registered sitemap providers. + * + * @since 5.5.0 + * + * @return WP_Sitemaps_Provider[] Array of sitemap providers. + */ + public function get_providers() { + return $this->providers; + } +}