class-wp-sitemaps-registry.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. * Class WP_Sitemaps_Registry.
  13. *
  14. * @since 5.5.0
  15. */
  16. #[AllowDynamicProperties]
  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. * Adds a new sitemap provider.
  28. *
  29. * @since 5.5.0
  30. *
  31. * @param string $name Name of the sitemap provider.
  32. * @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider.
  33. * @return bool Whether the provider was added successfully.
  34. */
  35. public function add_provider( $name, WP_Sitemaps_Provider $provider ) {
  36. if ( isset( $this->providers[ $name ] ) ) {
  37. return false;
  38. }
  39. /**
  40. * Filters the sitemap provider before it is added.
  41. *
  42. * @since 5.5.0
  43. *
  44. * @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider.
  45. * @param string $name Name of the sitemap provider.
  46. */
  47. $provider = apply_filters( 'wp_sitemaps_add_provider', $provider, $name );
  48. if ( ! $provider instanceof WP_Sitemaps_Provider ) {
  49. return false;
  50. }
  51. $this->providers[ $name ] = $provider;
  52. return true;
  53. }
  54. /**
  55. * Returns a single registered sitemap provider.
  56. *
  57. * @since 5.5.0
  58. *
  59. * @param string $name Sitemap provider name.
  60. * @return WP_Sitemaps_Provider|null Sitemap provider if it exists, null otherwise.
  61. */
  62. public function get_provider( $name ) {
  63. if ( ! is_string( $name ) || ! isset( $this->providers[ $name ] ) ) {
  64. return null;
  65. }
  66. return $this->providers[ $name ];
  67. }
  68. /**
  69. * Returns all registered sitemap providers.
  70. *
  71. * @since 5.5.0
  72. *
  73. * @return WP_Sitemaps_Provider[] Array of sitemap providers.
  74. */
  75. public function get_providers() {
  76. return $this->providers;
  77. }
  78. }