Como ocultar os métodos de envio do WooCommerce para determinadas condições

Publicados: 2020-06-15

O método de envio é um serviço e uma cobrança que o cliente vê na finalização da compra ao comprar qualquer item. Será uma opção essencial para uma loja de comércio eletrônico para uma experiência de entrega tranquila .

Como uma solução de comércio eletrônico, o WooCommerce também fornece métodos de envio como frete grátis , taxa fixa e retirada local , que podem ser configurados para várias zonas de envio com base nos locais. Por exemplo, a opção de frete grátis está disponível apenas para um determinado intervalo de códigos postais próximos ao local da loja e a opção de taxa fixa está disponível para a outra parte das zonas de entrega.

Default Shipping Methods
Métodos de envio padrão

As opções de envio baseadas em localização podem ser facilmente alcançadas pelo plug-in, mas para certas condições em que a localização não desempenha um papel vital, torna-se muito difícil para os proprietários da loja conseguir isso. As condições podem ser:

  1. Certos métodos de envio, como frete grátis, não devem estar disponíveis se o peso do pedido for superior a um determinado número de libras ou kg.
  2. A disponibilidade de alguns métodos de envio também é baseada no número de quantidades ou no preço de todo o pedido. Por exemplo, se o total do pedido for superior a US $ 250, apenas o método de frete grátis deve estar disponível e nenhum método de envio pago deve estar disponível.

Pode haver mais condições para as quais os métodos de envio precisam ser mostrados ou ocultos durante o checkout, mas neste post explicaremos o acima 2. Para conseguir isso para sua loja WooCommerce, você pode adicionar um trecho de código ou usar qualquer taxa de envio plug- ins disponíveis.

Usando um trecho de código

Vamos dar um exemplo da condição 1 que é mencionada acima, onde o Frete Grátis não deve estar disponível se o peso do pedido for superior a 5 kg. Você pode conseguir isso adicionando o código abaixo no arquivo functions.php do tema atualmente ativo.

Nota: Essas alterações podem ser substituídas por uma atualização do tema atual, portanto, é recomendável criar um tema filho e adicionar os trechos de código necessários no arquivo functions.php do tema filho. Ou você pode usar o plug-in Code Snippets para adicionar trechos personalizados.

 /** 
 * Ocultar frete grátis quando o peso do pedido for superior a 10kgs. 
 * 
 * @param array $rates Matriz de taxas encontradas para o pacote. 
 * @return array 
 */ 
function ts_hide_free_shipping_for_order_weight( $taxas, $pacote) { 
    $order_weight = WC()->cart->get_cart_contents_weight(); 
 
    if ( $order_weight > 5 ) { 
        foreach( $taxa como $taxa_id => $taxa_val) { 
            if ( 'free_shipping' === $rate_val->get_method_id() ) { 
                unset( $taxas[ $taxa_id ]);
            } 
        } 
    } 
    retornar $ taxas; 
} 

add_filter( 'woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );

Aqui o filtro woocommerce_package_rates está sendo usado para modificar as taxas calculadas no carrinho. Ele contém todas as taxas de envio que estarão disponíveis assim que o produto for adicionado ao carrinho. Portanto, precisamos desdefinir o método de envio necessário, que será Frete grátis no nosso caso a partir da matriz retornada por este filtro se o peso do pedido for superior a 5kgs.

Página do produto:

Product with 6kg weight
Produto com 6kg de peso

Página do carrinho com métodos de envio:

Free shipping is not available for the product with weight more than 5kg
O frete grátis não está disponível para o produto com peso superior a 5kg

Outra instância de ocultar métodos de envio no WooCommerce Cart seria permitir apenas frete grátis durante o checkout quando o total do pedido for superior a US $ 250. Isso pode ser feito adicionando o código abaixo no arquivo functions.php.

 /**
 * Ocultar as taxas de envio quando o total do pedido for superior a US$ 250.
 *
 * @param array $rates Matriz de taxas encontradas para o pacote.
 * @return array
 */
function ts_hide_shipping_for_order_total( $taxas) {
  $livre = array();

  $order_total = WC()->cart->get_subtotal();
  
  if( $order_total > 250 ) {
    foreach ( $taxas como $taxa_id => $taxa) {
      if ( 'free_shipping' === $rate->get_method_id() ) {
        $free[ $rate_id ] = $taxa;
      }
    }
  }
  Retorna ! vazio($grátis) ? $grátis : $taxas;
}
add_filter( 'woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100 );

Aqui, quando o total do pedido é superior a US$ 250, uma matriz com apenas métodos de frete grátis é retornada do filtro, caso contrário, todas as taxas de frete são devolvidas.

Hide Shipping Rate when Order total is more than $250
Ocultar a taxa de envio quando o total do pedido for superior a $ 250

Nos exemplos acima, tomamos a referência do método Free Shipping, então o id do método usado é free_shipping. Para alterar outros métodos de envio, os IDs dos métodos são:

Retirada local: local_pickup
Taxa fixa: flat_rate

A função get_method_id() busca o id do método apenas para os 3 métodos para todas as zonas de frete e não para um método individual de uma única zona de frete, então ela ocultará todas as taxas fixas, retirada local ou métodos de frete grátis disponíveis durante a finalização da compra. Mas se você quiser ocultar um método de envio específico, a combinação do ID do método de envio e do ID da instância precisa ser usada.

Por exemplo, 'flat_rate:3' em que 3 é o ID de instância exclusivo armazenado para cada método de envio para uma zona no banco de dados. Você pode encontrar o ID da instância do método de envio clicando com o botão direito do mouse no método de envio e inspecionar o elemento na ferramenta do desenvolvedor em seu navegador.

Instance ID

Usando diferentes extensões do WooCommerce para métodos de envio

Existem várias extensões pagas ou gratuitas disponíveis para configurar métodos de envio para diferentes condições. Alguns dos plugins mais usados ​​são:

Plugins pagos:

  1. Table Rate Shipping by WooCommerce : Este plugin estende as opções de envio padrão do WooCommerce, oferecendo opções de envio altamente personalizáveis.
  2. Plugin avançado de envio de taxa fixa para WooCommerce : Este plug-in ajudará você a configurar as taxas de envio em sua loja com base em regras avançadas de envio.
  3. Plugin WooCommerce Advance Shipping de Jeroen sormani : Este plugin permite que você ative os métodos de envio durante o checkout com base em regras definidas. As regras podem ser definidas para diferentes detalhes do carrinho, detalhes do produto ou diferentes detalhes do usuário .
  4. Flexible Shipping Pro para WooCommerce por WP Desk : Este plugin permite que você ative o método de envio com base no item específico, item de linha de carrinho, preço ou regras de peso .

Plug-ins gratuitos:

Alguns dos plugins acima também possuem uma versão gratuita com recursos limitados. Eles são:

  1. WooCommerce Advanced Free Shipping por Jeroen Sormani: Esta é uma versão gratuita do plugin WooCommerce Advanced Shipping. A única diferença com ambos os plugins é que este plugin permite apenas o método de envio gratuito para regras definidas e o plugin pago permite todos os métodos de envio.
  2. Envio flexível para WooCommerce por WP Desk : Esta é uma versão gratuita do plugin Flexible Shipping Pro para WooCommerce. Permite definir métodos de envio apenas para o preço e peso.

Para uma explicação detalhada dos plugins mencionados acima, você pode verificar este post.

Conclusão

Como vimos neste post, as opções de envio antecipado podem ser alcançadas simplesmente adicionando um trecho de código em seu site ou usando vários plugins disponíveis. Assim, você pode experimentar o trecho de código fornecido ou experimentar qualquer um dos plugins e nos informar se isso é benéfico para sua loja WooCommerce.