Commit fbacef2a37c for woocommerce
commit fbacef2a37c84fa4eb43692fbf590189588746ba
Author: Christopher Hertel <mail@christopher-hertel.de>
Date: Mon Nov 2 18:15:54 2026 +0100
Remove AbilitiesRegistry and load AbilitiesLoader through the container (#70410)
* Remove the unused AbilitiesRegistry class
* Load AbilitiesLoader through the container
* Update the changelog entry
* Drop the internal abilities class from the MCP docs
diff --git a/docs/features/mcp/README.md b/docs/features/mcp/README.md
index 5f3a8ef48ce..12133f441e1 100644
--- a/docs/features/mcp/README.md
+++ b/docs/features/mcp/README.md
@@ -268,12 +268,6 @@ WooCommerce Core
### Core Components
-**Abilities Registry** ([`AbilitiesRegistry.php`](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php))
-
-- Initializes WooCommerce ability categories and loaders
-- Bridges WordPress Abilities API with WooCommerce operations
-- Enables ability discovery for MCP servers and other Abilities API consumers
-
**Purpose-Built Domain Abilities** ([`Domain`](https://github.com/woocommerce/woocommerce/tree/trunk/plugins/woocommerce/src/Internal/Abilities/Domain))
- Provide WooCommerce product and order abilities backed by domain APIs
diff --git a/plugins/woocommerce/changelog/remove-abilities-registry b/plugins/woocommerce/changelog/remove-abilities-registry
new file mode 100644
index 00000000000..4f790aa6670
--- /dev/null
+++ b/plugins/woocommerce/changelog/remove-abilities-registry
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+Comment: Remove the unused internal AbilitiesRegistry class and load AbilitiesLoader through the container; no merchant-facing change.
+
diff --git a/plugins/woocommerce/includes/class-woocommerce.php b/plugins/woocommerce/includes/class-woocommerce.php
index 038321c9860..dd193283aa8 100644
--- a/plugins/woocommerce/includes/class-woocommerce.php
+++ b/plugins/woocommerce/includes/class-woocommerce.php
@@ -22,7 +22,7 @@ use Automattic\WooCommerce\Internal\DownloadPermissionsAdjuster;
use Automattic\WooCommerce\Internal\Features\FeaturesController;
use Automattic\WooCommerce\Internal\LegacyAssets\LegacySelect2UsageTracker;
use Automattic\WooCommerce\Internal\MCP\McpEndpointRemoval;
-use Automattic\WooCommerce\Internal\Abilities\AbilitiesRegistry;
+use Automattic\WooCommerce\Internal\Abilities\AbilitiesLoader;
use Automattic\WooCommerce\Internal\Abilities\AbilitiesTracking;
use Automattic\WooCommerce\Internal\ProductAttributes\VisualAttributeTermAdmin;
use Automattic\WooCommerce\Internal\ProductAttributesLookup\DataRegenerator;
@@ -408,7 +408,7 @@ final class WooCommerce {
$container->get( EmailImprovements::class );
$container->get( DeferredEmailQueue::class );
$container->get( AddressProviderController::class );
- $container->get( AbilitiesRegistry::class );
+ $container->get( AbilitiesLoader::class );
$container->get( McpEndpointRemoval::class );
$container->get( CouponCodeLookupInvalidator::class );
$container->get( ProductVersionStringInvalidator::class );
diff --git a/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php b/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php
index 5fac2d014b4..11b5f6d925b 100644
--- a/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php
+++ b/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php
@@ -81,7 +81,7 @@ class AbilitiesLoader {
*
* @since 10.9.0
*/
- final public static function init(): void {
+ final public function init(): void {
if ( self::$initialized ) {
return;
}
diff --git a/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php b/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php
deleted file mode 100644
index 972e2c46da9..00000000000
--- a/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Abilities Registry class file.
- */
-
-declare( strict_types=1 );
-
-namespace Automattic\WooCommerce\Internal\Abilities;
-
-defined( 'ABSPATH' ) || exit;
-
-/**
- * Abilities Registry class for WooCommerce.
- *
- * Centralized registry that initializes all WooCommerce abilities.
- * These abilities can be consumed by MCP, REST API, or other tools.
- */
-class AbilitiesRegistry {
-
- /**
- * Initialize all WooCommerce abilities.
- *
- * @since 10.9.0
- *
- * @internal
- */
- final public function init(): void {
- AbilitiesLoader::init();
- }
-
- /**
- * Get all ability IDs from the WordPress Abilities API.
- *
- * @return array Array of all ability IDs.
- */
- public function get_abilities_ids(): array {
- return array_keys( wp_get_abilities() );
- }
-}
diff --git a/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php b/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php
index a8c2d903fac..6e4015cfa48 100644
--- a/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php
+++ b/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php
@@ -86,7 +86,7 @@ class ExtensibleAbilitiesTest extends \WC_REST_Unit_Test_Case {
parent::setUp();
- AbilitiesLoader::init();
+ wc_get_container()->get( AbilitiesLoader::class );
$this->reset_registries();
self::$received = array();
wp_set_current_user( self::$administrator_id );