Uma vez ou outra vejo pessoas fazendo entrega utilizando o PAC dos Correios sem cobrar nada e utilizando plugin WooCommerce Correios para calcular o frete para todos os métodos de pagamento.
Geralmente para fazer algo assim é simples, pois é possível desativar o método PAC do plugin e configurar o método de entrega gratuita do WooCommerce.
Entretanto o WooCommerce Correios tem um plus que é exibir uma data estimada de entrega, que não é possível fazer isso com o método de entrega gratuita nativo.
Fazer isso é extremamente simples, uma vez que o WooCommerce Correios possui o filtro woocommerce_correios_shipping_methods
que é utilizando tanto no simulador de entrega na página do pedido como também na hora de pegar os valores e exibir no carrinho e na finalização.
Segue o código necessário para fazer isso:
<?php | |
function custom_woocommerce_correios_shipping_methods( $rate ) { | |
$rate['cost'] = 0; | |
return $rate; | |
} | |
add_filter( 'woocommerce_correios_correios-pac_rate', 'custom_woocommerce_correios_shipping_methods' ); |
De resto é só deixar a imaginação fluir, como por exemplo dar frete grátis pelo PAC apenas quando o pedido tem um valor mínimo de 100 reais:
<?php | |
function custom_woocommerce_correios_shipping_methods( $rate ) { | |
if ( isset( WC()->cart->subtotal ) && 100 <= WC()->cart->subtotal ) { | |
$rate['cost'] = 0; | |
} | |
return $rate; | |
} | |
add_filter( 'woocommerce_correios_correios-pac_rate', 'custom_woocommerce_correios_shipping_methods' ); |
Ou frete grátis apenas para uma área de entrega, no caso de ter uma área de entrega para determinados estados (por exemplo, apenas São Paulo e Rio de Janeiro):
<?php | |
function custom_woocommerce_correios_shipping_methods( $rate, $instance_id ) { | |
// Verifica se esta utilizando a instancia correta, se não estiver para o código. | |
if ( 99 !== $instance_id ) { | |
return $rate; | |
} | |
$rate['cost'] = 0; | |
return $rate; | |
} | |
add_filter( 'woocommerce_correios_correios-pac_rate', 'custom_woocommerce_correios_shipping_methods', 10, 2 ); |
Neste último exemplo observe que é passado o $instance_id
que é o identificador da instancia do método de pagamento, é possível encontrar na URL ao editar o método escolhido, como por exemplo wp-admin/admin.php?page=wc-settings&tab=shipping&instance_id=99
.
Nota:
- Código atualizado em 29 de Dezembro de 2016.
Salve, Cláudio!
Cara, vi que vc fez uma condição para o subtotal usando WC()->cart->subtotal
E se eu quiser oferecer frete grátis para uma região, como SP, por exemplo? Tem como fazer isso via código ou só pela opção nativa do Woocommerce mesmo?
Acabei de adicionar um exemplo ensinando a dar frete grátis por estado, deve resolver já seu problema.
Valeeeeu!
Cara, demorou pra você criar um curso de wordpress para jovens padawans se tornarem master jedi.
Grande abraço
Oi Claudio! Eu gostaria de colocar frete grátis para valor acima de 100 reais e para determinados estados, com a estimativa de tempo. Como faço isso?
Ps.: Esse arquivo functions.php é aquele que está na pasta raiz do tema?
Abraços!
Como eu falei, são exemplos para dar ideias para vocês de como fazer, já tem exemplos mais do que suficiente para você conseguir fazer o que você quer.
Não.