HI
I would like to report a reproducible checkout bug that appears to be caused by Woodmart’s interaction with WooCommerce shipping sessions.
Environment:
WordPress + WooCommerce (latest)
CheckoutWC (v10.3.9)
Woodmart theme
Local Pickup enabled
No caching (WP Rocket disabled during tests)
Issue:
When using CheckoutWC with Local Pickup, the checkout sometimes fails with the error:
“Shipping is a required field”
even though Local Pickup is selected and shipping address fields are hidden.
Steps to reproduce:
Add a product to cart
Go to checkout
Select Local Pickup
Fill only name + phone
Click “Place order”
Expected result:
Order is placed successfully without requiring a shipping address.
Actual result:
Checkout validation fails with “Shipping is a required field”.
Important finding:
Debug logs show that when Local Pickup is selected:
cfw_delivery_method = pickup
but WooCommerce session still contains:
chosen_shipping_methods = flat_rate:*
Because of this, WooCommerce thinks a shipping method is still active and forces shipping address validation.
Proof:
Switching to a different theme immediately fixes the issue
Same WooCommerce + CheckoutWC configuration works perfectly without Woodmart
This confirms the issue is caused by Woodmart’s checkout/shipping handling
Conclusion:
Woodmart appears to override or persist chosen_shipping_methods during AJAX checkout updates, causing WooCommerce to treat pickup orders as shipping orders.
This creates a conflict with CheckoutWC’s pickup logic.
Please investigate how Woodmart updates or caches chosen_shipping_methods during checkout, especially when Local Pickup is selected.
If needed, I can provide logs or assist with further testing.