wp/wp-includes/sitemaps/class-wp-sitemaps-registry.php
changeset 16 a86126ab1dd4
child 21 48c4eec2b7e6
equal deleted inserted replaced
15:3d4e9c994f10 16:a86126ab1dd4
       
     1 <?php
       
     2 /**
       
     3  * Sitemaps: WP_Sitemaps_Registry class
       
     4  *
       
     5  * Handles registering sitemap providers.
       
     6  *
       
     7  * @package WordPress
       
     8  * @subpackage Sitemaps
       
     9  * @since 5.5.0
       
    10  */
       
    11 
       
    12 /**
       
    13  * Class WP_Sitemaps_Registry.
       
    14  *
       
    15  * @since 5.5.0
       
    16  */
       
    17 class WP_Sitemaps_Registry {
       
    18 	/**
       
    19 	 * Registered sitemap providers.
       
    20 	 *
       
    21 	 * @since 5.5.0
       
    22 	 *
       
    23 	 * @var WP_Sitemaps_Provider[] Array of registered sitemap providers.
       
    24 	 */
       
    25 	private $providers = array();
       
    26 
       
    27 	/**
       
    28 	 * Adds a new sitemap provider.
       
    29 	 *
       
    30 	 * @since 5.5.0
       
    31 	 *
       
    32 	 * @param string               $name     Name of the sitemap provider.
       
    33 	 * @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider.
       
    34 	 * @return bool Whether the provider was added successfully.
       
    35 	 */
       
    36 	public function add_provider( $name, WP_Sitemaps_Provider $provider ) {
       
    37 		if ( isset( $this->providers[ $name ] ) ) {
       
    38 			return false;
       
    39 		}
       
    40 
       
    41 		/**
       
    42 		 * Filters the sitemap provider before it is added.
       
    43 		 *
       
    44 		 * @since 5.5.0
       
    45 		 *
       
    46 		 * @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider.
       
    47 		 * @param string               $name     Name of the sitemap provider.
       
    48 		 */
       
    49 		$provider = apply_filters( 'wp_sitemaps_add_provider', $provider, $name );
       
    50 		if ( ! $provider instanceof WP_Sitemaps_Provider ) {
       
    51 			return false;
       
    52 		}
       
    53 
       
    54 		$this->providers[ $name ] = $provider;
       
    55 
       
    56 		return true;
       
    57 	}
       
    58 
       
    59 	/**
       
    60 	 * Returns a single registered sitemap provider.
       
    61 	 *
       
    62 	 * @since 5.5.0
       
    63 	 *
       
    64 	 * @param string $name Sitemap provider name.
       
    65 	 * @return WP_Sitemaps_Provider|null Sitemap provider if it exists, null otherwise.
       
    66 	 */
       
    67 	public function get_provider( $name ) {
       
    68 		if ( ! isset( $this->providers[ $name ] ) ) {
       
    69 			return null;
       
    70 		}
       
    71 
       
    72 		return $this->providers[ $name ];
       
    73 	}
       
    74 
       
    75 	/**
       
    76 	 * Returns all registered sitemap providers.
       
    77 	 *
       
    78 	 * @since 5.5.0
       
    79 	 *
       
    80 	 * @return WP_Sitemaps_Provider[] Array of sitemap providers.
       
    81 	 */
       
    82 	public function get_providers() {
       
    83 		return $this->providers;
       
    84 	}
       
    85 }