You may be aware that the WooCommerce Checkout page “order review” section reloads/refreshes every time there is a change of address – in this way shipping, taxes and optional fees are properly recalculated and customers are returned with the correct total.
But in case you add custom checkout fields that may cause a difference in pricing, or you want to keep the checkout UX consistent, or you have some other kinds of logic, it may be useful to refresh the order review section after a change on any checkout field. Enjoy!
PHP Snippet: Let Every Billing / Shipping / Account / Order Form Fields Update the WooCommerce Checkout Order Review
/**
* @snippet Refresh Checkout Upon Input Field Change
* @how-to businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 7
* @community https://businessbloomer.com/club/
*/
add_filter( 'woocommerce_checkout_fields', 'bbloomer_checkout_fields_trigger_refresh', 9999 );
function bbloomer_checkout_fields_trigger_refresh( $fields ) {
$fields['billing']['billing_company']['class'][] = 'update_totals_on_change';
// ADD AS MANY FIELDS AS YOU LIKE, SAME FORMAT, SEE LIST BELOW
// E.G. $fields['account']['account_password']['class'][] = 'update_totals_on_change';
return $fields;
}
Billing Fields
- billing_first_name
- billing_last_name
- billing_company
- billing_address_1
- billing_address_2
- billing_city
- billing_postcode
- billing_country
- billing_state
- billing_email
- billing_phone
- …any custom billing field ID
Shipping Fields
- shipping_first_name
- shipping_last_name
- shipping_company
- shipping_address_1
- shipping_address_2
- shipping_city
- shipping_postcode
- shipping_country
- shipping_state
- …any custom shipping field ID
Account Fields
- account_username
- account_password
- account_password-2
- …any custom account field ID
Order Fields
- order_comments
- …any custom order field ID
Does not work Im afraid. Do you have any other solutions?
Are you on the checkout block or a custom checkout maybe?