Commit 3db2a3b7846 for woocommerce

commit 3db2a3b78462019b1f5d06670e83194e6d221597
Author: Luigi Teschio <gigitux@gmail.com>
Date:   Thu Jul 16 13:50:25 2026 +0200

    Guard legacy Select2 tracking against older analytics packages (#66710)

    * Fix legacy Select2 analytics availability guard

    * Add changelog entry for analytics queue guard

    * Apply suggestion from @kmanijak

    Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>

    ---------

    Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>

diff --git a/plugins/woocommerce/changelog/fix-legacy-select2-analytics-guard b/plugins/woocommerce/changelog/fix-legacy-select2-analytics-guard
new file mode 100644
index 00000000000..2e3a16bba35
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-legacy-select2-analytics-guard
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Prevent fatal errors when older WooCommerce Analytics packages are loaded.
diff --git a/plugins/woocommerce/phpstan.neon b/plugins/woocommerce/phpstan.neon
index 2eec6bbede8..de38b3df5a0 100644
--- a/plugins/woocommerce/phpstan.neon
+++ b/plugins/woocommerce/phpstan.neon
@@ -27,6 +27,7 @@ parameters:
 	scanDirectories:
 		- vendor/wordpress/abilities-api
 		- packages/action-scheduler
+		- ../../packages/php/woocommerce-analytics/src
 	scanFiles:
 		- php-stubs/wc-admin-feature-config.php
 		- php-stubs/wc-constants.php
@@ -52,4 +53,3 @@ parameters:
 			path: src/StoreApi/Utilities/ProductItemTrait.php
 	parallel:
 		maximumNumberOfProcesses: 4
-
diff --git a/plugins/woocommerce/src/Internal/LegacyAssets/LegacySelect2UsageTracker.php b/plugins/woocommerce/src/Internal/LegacyAssets/LegacySelect2UsageTracker.php
index 79c2167663e..666c388e8ae 100644
--- a/plugins/woocommerce/src/Internal/LegacyAssets/LegacySelect2UsageTracker.php
+++ b/plugins/woocommerce/src/Internal/LegacyAssets/LegacySelect2UsageTracker.php
@@ -204,7 +204,7 @@ class LegacySelect2UsageTracker implements RegisterHooksInterface {
 	 * @since 11.0.0
 	 */
 	protected function record_frontend_event( string $event_name, array $properties ): void {
-		if ( ! class_exists( WC_Analytics_Tracking::class ) ) {
+		if ( ! $this->is_frontend_tracking_available() ) {
 			return;
 		}

@@ -219,7 +219,9 @@ class LegacySelect2UsageTracker implements RegisterHooksInterface {
 	 * @since 11.0.0
 	 */
 	protected function is_frontend_tracking_available(): bool {
-		return did_action( 'woocommerce_analytics_init' ) && class_exists( WC_Analytics_Tracking::class );
+		return did_action( 'woocommerce_analytics_init' )
+			&& class_exists( WC_Analytics_Tracking::class )
+			&& is_callable( array( WC_Analytics_Tracking::class, 'add_event_to_queue' ) );
 	}

 	/**