Commit f1268e7fd59 for woocommerce
commit f1268e7fd59e013f1324556d2a6a6951ad5ef95c
Author: Francesco <frosso@users.noreply.github.com>
Date: Tue Jul 14 12:48:37 2026 +0200
fix: window qualification for wc in classic checkout (#66349)
diff --git a/plugins/woocommerce/changelog/64537-fix-checkout-wc-namespace-shadowing b/plugins/woocommerce/changelog/64537-fix-checkout-wc-namespace-shadowing
new file mode 100644
index 00000000000..a5515f24706
--- /dev/null
+++ b/plugins/woocommerce/changelog/64537-fix-checkout-wc-namespace-shadowing
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+fix: using window.wc instead of wc in classic checkout so they no longer break when a third-party script shadows the global wc binding.
diff --git a/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js b/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js
index 014726e9078..e0016fe2fe5 100644
--- a/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js
+++ b/plugins/woocommerce/client/legacy/js/frontend/add-payment-method.js
@@ -40,7 +40,7 @@ jQuery( function( $ ) {
// When a gateway registers after a page load, render its button if it's selected.
$( document.body ).on( 'wc_custom_place_order_button_registered', function( e, gatewayId ) {
- wc.customPlaceOrderButton.__maybeShow( gatewayId, createAddPaymentMethodApi() );
+ window.wc.customPlaceOrderButton.__maybeShow( gatewayId, createAddPaymentMethodApi() );
} );
/* Payment option selection */
@@ -58,14 +58,14 @@ jQuery( function( $ ) {
}
// Handle custom place order button for selected gateway
- wc.customPlaceOrderButton.__maybeShow( $( this ).val(), createAddPaymentMethodApi() );
+ window.wc.customPlaceOrderButton.__maybeShow( $( this ).val(), createAddPaymentMethodApi() );
});
// Hide default button immediately if initially selected gateway has custom button.
// This must happen BEFORE triggering click to prevent flash of the default button.
var $initialPaymentMethod = $form.find( 'input[name="payment_method"]:checked' );
if ( $initialPaymentMethod.length ) {
- wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $initialPaymentMethod.val() );
+ window.wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $initialPaymentMethod.val() );
}
// Trigger initial click
diff --git a/plugins/woocommerce/client/legacy/js/frontend/checkout.js b/plugins/woocommerce/client/legacy/js/frontend/checkout.js
index 8b54c351fca..622f9192afc 100644
--- a/plugins/woocommerce/client/legacy/js/frontend/checkout.js
+++ b/plugins/woocommerce/client/legacy/js/frontend/checkout.js
@@ -14,7 +14,7 @@ jQuery( function ( $ ) {
* @return {Object} API object with validate and submit methods
*/
function createCheckoutPlaceOrderApi() {
- var $form = wc.customPlaceOrderButton.__getForm();
+ var $form = window.wc.customPlaceOrderButton.__getForm();
return {
/**
@@ -114,12 +114,12 @@ jQuery( function ( $ ) {
// After the update, init_payment_methods() will trigger payment method selection,
// which will call render() again for the active gateway.
$( document.body ).on( 'update_checkout', function () {
- wc.customPlaceOrderButton.__cleanup();
+ window.wc.customPlaceOrderButton.__cleanup();
} );
// When a gateway registers after a page load, render its button if it's selected.
$( document.body ).on( 'wc_custom_place_order_button_registered', function ( e, gatewayId ) {
- wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
+ window.wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
} );
var wc_checkout_form = {
@@ -152,7 +152,7 @@ jQuery( function ( $ ) {
// Initialize the custom place order button for the "order-pay" page
var $orderPayMethod = this.$order_review.find( 'input[name="payment_method"]:checked' );
if ( $orderPayMethod.length ) {
- wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $orderPayMethod.val() );
+ window.wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $orderPayMethod.val() );
$orderPayMethod.trigger( 'click' );
}
}
@@ -266,7 +266,7 @@ jQuery( function ( $ ) {
// This hides the default button immediately to prevent flash while the gateway JS loads
var $selectedMethod = $payment_methods.filter( ':checked' ).eq( 0 );
if ( $selectedMethod.length ) {
- wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $selectedMethod.val() );
+ window.wc.customPlaceOrderButton.__maybeHideDefaultButtonOnInit( $selectedMethod.val() );
}
// Trigger click event for selected method
@@ -317,7 +317,7 @@ jQuery( function ( $ ) {
// Handle custom place order button
var gatewayId = $( this ).val();
- wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
+ window.wc.customPlaceOrderButton.__maybeShow( gatewayId, createCheckoutPlaceOrderApi() );
wc_checkout_form.selectedPaymentMethod = selectedPaymentMethod;
},