Woocommerce - atualizando shipping_total quando usuário altera informações de endereço

Woocommerce - atualizando shipping_total quando usuário altera informações de endereço

Um dos problemas clássicos de experiência de usário do Woocommerce é o fluxo de checkout. Quando o usuário altera as informações de endereço como cep por exemplo o CMS não faz o refresh das informações de custo de frete.

Isto mesmo que você esteja utilizando o plugins dos Correios ou mesmo do Melhor Envio.

Uma forma de minimizar este problema é adicionando uma hook que atualiza o shipping_total quando o usuário alterar o endereço, número ou cep.

A solução é simples e você pode adicionar no functions.php do seu template

function fluidcheckout_change_billing_address_fields_args( $fields ) {
	if ( array_key_exists( 'billing_state', $fields ) ) { $fields[ 'billing_state' ][ 'class' ][] = 'update_totals_on_change'; }
	if ( array_key_exists( 'billing_city', $fields ) ) { $fields[ 'billing_city' ][ 'class' ][] = 'update_totals_on_change'; }
	if ( array_key_exists( 'billing_postcode', $fields ) ) { $fields[ 'billing_postcode' ][ 'class' ][] = 'update_totals_on_change'; }
	return $fields;
}
add_filter( 'woocommerce_billing_fields', 'fluidcheckout_change_billing_address_fields_args', 300 );

Você pode baixar o snippet através deste Gist
https://gist.github.com/jaccon/8ccc451484bf1d2a55148d5d9bf0535e