1. O problema
Se você tem um ecommerce, muitas vezes deve ter se deparado (ou ainda irá se deparar) com clientes que burlam o registro e colocam dados diferentes para que a entrega seja mais barata.
De modo padrão, o WooCommerce permite que todos os campos de finalização sejam editáveis: rua, número, bairro, cidade, estado, país, etc.
O problema é que a taxa de frete da maioria dos ecommerces é calculada por CEP e como todos os campos são editáveis, um cliente mal intencionado pode colocar um CEP diferente e depois alterar o endereço, mesmo com o CEP de outro lugar.
Na imagem abaixo, um cliente digita um CEP de Copacabana, no Rio de Janeiro, e depois preenche os dados de um outro bairro, 60km de distancia da loja e neste caso, a empresa não entrega.
O cliente pode alegar que fez o pedido, contava com o pedido e o sistema aceitou, culpando a empresa e o site pelo erro e até pedir reparação. Sim, tem gente malandra assim!
2. A solução
Para resolver essa situação, podemos definir que os campos não sejam editáveis, e que sejam preenchidos automaticamente e apenas após a inserção de CEP.
Podemos definir que os campos bairro, cidade e estado sejam preenchidos após o cliente digitar o CEP.
Para isso você deve ir até o functions.php do seu tema (ou do seu child theme) e inserir o código abaixo:
add_filter(‘woocommerce_billing_fields’, ‘my_woocommerce_billing_fields’);
function my_woocommerce_billing_fields($fields)
{
$fields[‘nome-do-campo’][‘custom_attributes’] = array(‘readonly’=>’readonly’);
return $fields;
}
2.a – Checar o campo pelas Ferramentas de Desenvolvedor do navegador
Os nomes dos campos são quase sempre os mesmos, porém algum tema ou plugin pode altera-lo, e podem estar personalizados.
Para descobrir o campo que você quer configurar como não editável, vá no modo inspecionar do seu navegador e coloque o mouse em cima do elemento, e aparecerá algo como:
2.b – Checar os campos por plugin
Ou você pode instalar o plugin Checkout Field Editor (Checkout Manager) for WooCommerce
Finalizando
Depois de verificar os campos e definir quais serão, basta vc trocar esse trecho:
$fields[‘nome-do-campo’][‘custom_attributes’] = array(‘readonly’=>’readonly’);
por
$fields[‘billing_city’][‘custom_attributes’] = array(‘readonly’=>’readonly’);
Vá adicionando todos os campos que quiser, mas recomendamos que você use apenas os 3 principais:
billing_city para cidade
billing_neighborhood para bairro
billing_state para estado
Salve o functions.php e teste.
Qualquer dúvida, comenta aí!