Nessuna descrizione

class-wp-sitemaps-registry.php 1.8KB

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