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' ) );
}
/**