diff --git src/wp-includes/sitemaps.php src/wp-includes/sitemaps.php
index 9600540156..f556246be5 100644
|
|
|
function wp_get_sitemaps() { |
| 58 | 58 | return array(); |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | | return $sitemaps->registry->get_sitemaps(); |
| | 61 | return $sitemaps->registry->get_providers(); |
| 62 | 62 | } |
| 63 | 63 | |
| 64 | 64 | /** |
| … |
… |
function wp_register_sitemap( $name, WP_Sitemaps_Provider $provider ) { |
| 77 | 77 | return false; |
| 78 | 78 | } |
| 79 | 79 | |
| 80 | | return $sitemaps->registry->add_sitemap( $name, $provider ); |
| | 80 | return $sitemaps->registry->add_provider( $name, $provider ); |
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | /** |
diff --git src/wp-includes/sitemaps/class-wp-sitemaps-index.php src/wp-includes/sitemaps/class-wp-sitemaps-index.php
index 91ceea0ae0..9449b4b6a4 100644
|
|
|
class WP_Sitemaps_Index { |
| 54 | 54 | public function get_sitemap_list() { |
| 55 | 55 | $sitemaps = array(); |
| 56 | 56 | |
| 57 | | $providers = $this->registry->get_sitemaps(); |
| | 57 | $providers = $this->registry->get_providers(); |
| 58 | 58 | /* @var WP_Sitemaps_Provider $provider */ |
| 59 | 59 | foreach ( $providers as $name => $provider ) { |
| 60 | 60 | $sitemap_entries = $provider->get_sitemap_entries(); |
diff --git src/wp-includes/sitemaps/class-wp-sitemaps-registry.php src/wp-includes/sitemaps/class-wp-sitemaps-registry.php
index c95f04c77f..1235670a27 100644
|
|
|
|
| 2 | 2 | /** |
| 3 | 3 | * Sitemaps: WP_Sitemaps_Registry class |
| 4 | 4 | * |
| 5 | | * Handles registering sitemaps. |
| | 5 | * Handles registering sitemap providers. |
| 6 | 6 | * |
| 7 | 7 | * @package WordPress |
| 8 | 8 | * @subpackage Sitemaps |
| … |
… |
|
| 16 | 16 | */ |
| 17 | 17 | class WP_Sitemaps_Registry { |
| 18 | 18 | /** |
| 19 | | * Registered sitemaps. |
| | 19 | * Registered sitemap providers. |
| 20 | 20 | * |
| 21 | 21 | * @since 5.5.0 |
| 22 | 22 | * |
| 23 | | * @var WP_Sitemaps_Provider[] Array of registered sitemaps. |
| | 23 | * @var WP_Sitemaps_Provider[] Array of registered sitemap providers. |
| 24 | 24 | */ |
| 25 | | private $sitemaps = array(); |
| | 25 | private $providers = array(); |
| 26 | 26 | |
| 27 | 27 | /** |
| 28 | 28 | * Adds a sitemap with route to the registry. |
| 29 | 29 | * |
| 30 | 30 | * @since 5.5.0 |
| 31 | 31 | * |
| 32 | | * @param string $name Name of the sitemap. |
| | 32 | * @param string $name Name of the sitemap provider. |
| 33 | 33 | * @param WP_Sitemaps_Provider $provider Instance of a WP_Sitemaps_Provider. |
| 34 | | * @return bool True if the sitemap was added, false if it is already registered. |
| | 34 | * @return bool True if the provider was added, false if it is already registered. |
| 35 | 35 | */ |
| 36 | | public function add_sitemap( $name, WP_Sitemaps_Provider $provider ) { |
| 37 | | if ( isset( $this->sitemaps[ $name ] ) ) { |
| | 36 | public function add_provider( $name, WP_Sitemaps_Provider $provider ) { |
| | 37 | if ( isset( $this->providers[ $name ] ) ) { |
| 38 | 38 | return false; |
| 39 | 39 | } |
| 40 | 40 | |
| 41 | | $this->sitemaps[ $name ] = $provider; |
| | 41 | $this->providers[ $name ] = $provider; |
| 42 | 42 | |
| 43 | 43 | return true; |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | 46 | /** |
| 47 | | * Returns a single registered sitemaps provider. |
| | 47 | * Returns a single registered sitemap provider. |
| 48 | 48 | * |
| 49 | 49 | * @since 5.5.0 |
| 50 | 50 | * |
| 51 | 51 | * @param string $name Sitemap provider name. |
| 52 | 52 | * @return WP_Sitemaps_Provider|null Sitemaps provider if it exists, null otherwise. |
| 53 | 53 | */ |
| 54 | | public function get_sitemap( $name ) { |
| 55 | | if ( ! isset( $this->sitemaps[ $name ] ) ) { |
| | 54 | public function get_provider( $name ) { |
| | 55 | if ( ! isset( $this->providers[ $name ] ) ) { |
| 56 | 56 | return null; |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | | return $this->sitemaps[ $name ]; |
| | 59 | return $this->providers[ $name ]; |
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | /** |
| … |
… |
class WP_Sitemaps_Registry { |
| 66 | 66 | * |
| 67 | 67 | * @return WP_Sitemaps_Provider[] Array of sitemap providers. |
| 68 | 68 | */ |
| 69 | | public function get_sitemaps() { |
| 70 | | return $this->sitemaps; |
| | 69 | public function get_providers() { |
| | 70 | return $this->providers; |
| 71 | 71 | } |
| 72 | 72 | } |
diff --git src/wp-includes/sitemaps/class-wp-sitemaps.php src/wp-includes/sitemaps/class-wp-sitemaps.php
index 828e7931dc..01f1bf8b35 100644
|
|
|
class WP_Sitemaps { |
| 135 | 135 | // Register each supported provider. |
| 136 | 136 | /* @var WP_Sitemaps_Provider $provider */ |
| 137 | 137 | foreach ( $providers as $name => $provider ) { |
| 138 | | $this->registry->add_sitemap( $name, $provider ); |
| | 138 | $this->registry->add_provider( $name, $provider ); |
| 139 | 139 | } |
| 140 | 140 | } |
| 141 | 141 | |
| … |
… |
class WP_Sitemaps { |
| 212 | 212 | exit; |
| 213 | 213 | } |
| 214 | 214 | |
| 215 | | $provider = $this->registry->get_sitemap( $sitemap ); |
| | 215 | $provider = $this->registry->get_provider( $sitemap ); |
| 216 | 216 | |
| 217 | 217 | if ( ! $provider ) { |
| 218 | 218 | return; |
diff --git tests/phpunit/tests/sitemaps/sitemaps-index.php tests/phpunit/tests/sitemaps/sitemaps-index.php
index 56b92be569..f959da8344 100644
|
|
|
class Test_WP_Sitemaps_Index extends WP_UnitTestCase { |
| 13 | 13 | * There are 2 providers registered. |
| 14 | 14 | * Hence, 3*4*2=24. |
| 15 | 15 | */ |
| 16 | | $registry->add_sitemap( 'foo', new WP_Sitemaps_Test_Provider( 'foo' ) ); |
| 17 | | $registry->add_sitemap( 'bar', new WP_Sitemaps_Test_Provider( 'bar' ) ); |
| | 16 | $registry->add_provider( 'foo', new WP_Sitemaps_Test_Provider( 'foo' ) ); |
| | 17 | $registry->add_provider( 'bar', new WP_Sitemaps_Test_Provider( 'bar' ) ); |
| 18 | 18 | |
| 19 | 19 | $sitemap_index = new WP_Sitemaps_Index( $registry ); |
| 20 | 20 | $this->assertCount( 24, $sitemap_index->get_sitemap_list() ); |
| … |
… |
class Test_WP_Sitemaps_Index extends WP_UnitTestCase { |
| 29 | 29 | $registry = new WP_Sitemaps_Registry(); |
| 30 | 30 | |
| 31 | 31 | // add 3 providers, which combined produce more than the maximum 50000 sitemaps in the index. |
| 32 | | $registry->add_sitemap( 'provider_1', new WP_Sitemaps_Large_Test_Provider( 25000 ) ); |
| 33 | | $registry->add_sitemap( 'provider_2', new WP_Sitemaps_Large_Test_Provider( 25000 ) ); |
| 34 | | $registry->add_sitemap( 'provider_3', new WP_Sitemaps_Large_Test_Provider( 25000 ) ); |
| | 32 | $registry->add_provider( 'provider_1', new WP_Sitemaps_Large_Test_Provider( 25000 ) ); |
| | 33 | $registry->add_provider( 'provider_2', new WP_Sitemaps_Large_Test_Provider( 25000 ) ); |
| | 34 | $registry->add_provider( 'provider_3', new WP_Sitemaps_Large_Test_Provider( 25000 ) ); |
| 35 | 35 | |
| 36 | 36 | $count = 0; |
| 37 | | foreach ( $registry->get_sitemaps() as $provider ) { |
| | 37 | foreach ( $registry->get_providers() as $provider ) { |
| 38 | 38 | $count += count( $provider->get_url_list( 1 ) ); |
| 39 | 39 | } |
| 40 | 40 | $this->assertGreaterThan( 50000, $count ); |
| … |
… |
class Test_WP_Sitemaps_Index extends WP_UnitTestCase { |
| 46 | 46 | public function test_get_sitemap_list_no_entries() { |
| 47 | 47 | $registry = new WP_Sitemaps_Registry(); |
| 48 | 48 | |
| 49 | | $registry->add_sitemap( 'foo', new WP_Sitemaps_Empty_Test_Provider( 'foo' ) ); |
| | 49 | $registry->add_provider( 'foo', new WP_Sitemaps_Empty_Test_Provider( 'foo' ) ); |
| 50 | 50 | |
| 51 | 51 | $sitemap_index = new WP_Sitemaps_Index( $registry ); |
| 52 | 52 | $this->assertCount( 0, $sitemap_index->get_sitemap_list() ); |
diff --git tests/phpunit/tests/sitemaps/sitemaps-registry.php tests/phpunit/tests/sitemaps/sitemaps-registry.php
index c6c664a65b..faeba78852 100644
|
|
|
|
| 4 | 4 | * @group sitemaps |
| 5 | 5 | */ |
| 6 | 6 | class Test_WP_Sitemaps_Registry extends WP_UnitTestCase { |
| 7 | | public function test_add_sitemap() { |
| | 7 | public function test_add_provider() { |
| 8 | 8 | $provider = new WP_Sitemaps_Test_Provider(); |
| 9 | 9 | $registry = new WP_Sitemaps_Registry(); |
| 10 | 10 | |
| 11 | | $actual = $registry->add_sitemap( 'foo', $provider ); |
| 12 | | $sitemaps = $registry->get_sitemaps(); |
| | 11 | $actual = $registry->add_provider( 'foo', $provider ); |
| | 12 | $sitemaps = $registry->get_providers(); |
| 13 | 13 | |
| 14 | 14 | $this->assertTrue( $actual ); |
| 15 | 15 | $this->assertCount( 1, $sitemaps ); |
| 16 | 16 | $this->assertSame( $sitemaps['foo'], $provider, 'Can not confirm sitemap registration is working.' ); |
| 17 | 17 | } |
| 18 | 18 | |
| 19 | | public function test_add_sitemap_prevent_duplicates() { |
| | 19 | public function test_add_provider_prevent_duplicates() { |
| 20 | 20 | $provider1 = new WP_Sitemaps_Test_Provider(); |
| 21 | 21 | $provider2 = new WP_Sitemaps_Test_Provider(); |
| 22 | 22 | $registry = new WP_Sitemaps_Registry(); |
| 23 | 23 | |
| 24 | | $actual1 = $registry->add_sitemap( 'foo', $provider1 ); |
| 25 | | $actual2 = $registry->add_sitemap( 'foo', $provider2 ); |
| 26 | | $sitemaps = $registry->get_sitemaps(); |
| | 24 | $actual1 = $registry->add_provider( 'foo', $provider1 ); |
| | 25 | $actual2 = $registry->add_provider( 'foo', $provider2 ); |
| | 26 | $sitemaps = $registry->get_providers(); |
| 27 | 27 | |
| 28 | 28 | $this->assertTrue( $actual1 ); |
| 29 | 29 | $this->assertFalse( $actual2 ); |