Suporte » Ajustando o WordPress » Ajuda com filtro woocommerce_shipping_packages (Woocommerce)

  • chicodarave

    (@chicodarave)


    Olá.

    Estou precisando adicionar 5% ao valor final do frete, me informaram que eu teria que usar o filtro woocommerce_shipping_packages
    Eu pesquisei mas não consigo entender como usá-lo para obter esse resultado nem onde devo colocar esse código.
    Alguém poderia me dar uma força?
    Tenho conhecimento básico de Woocommerce, PHP e relacionados, intermediário em programação (C, Pascal, ASM).
    Estou usando um tema child.

    Obrigado.

Visualizando 14 respostas - 1 até 14 (de um total de 14)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, tudo bem?

    Nesse link tem uma breve documentação sobre o filtro.

    Porém, resumindo, você precisa adicionar um código PHP para “filtrar” uma variável em algum momento. Geralmente colocamos isso no código de um plugin ou no tema. Como está usando um Tema Filho pode ser no functions.php dele.

    O código é o seguinte:

    // Uma função para filtrar a array
    function chicodarave_woocommerce_shipping_packages( $array, $int ) { 
        // Faz o que quiser fazer e retorna: 
        return $array; 
    }; 
             
    // add the filter 
    add_filter( 'woocommerce_shipping_packages', 'chicodarave_woocommerce_shipping_packages', 10, 2 );

    Abraços

    chicodarave

    (@chicodarave)

    Olá Mário.

    Agradeço pela atenção mas continuei quase que na mesma, agora sei onde colocar o código mas não sei como fazer ele fazer o que quero.
    Pesquisei mais um monte a respeito desse filtro e não achei nada que me ajudasse.

    Agradeço de qualquer forma.
    Um abraço.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Qual plugin de frete está usando?

    chicodarave

    (@chicodarave)

    Correios do Cláudio Sanches

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Bem, baseado nesse post:
    https://calebburks.com/customize-woocommerce-shipping-rates/

    E nessa documentação:
    https://docs.woocommerce.com/document/hide-other-shipping-methods-when-free-shipping-is-available/

    Creio que podemos fazer assim:

    // Function
    function chicodarave_woocommerce_package_rates( $rates, $package ) {
        foreach ( $rates as $rate_id => $rate ) {
            $current_cost = $rate->cost;
            $rates[ $rate_id ]->cost = $current_cost + ( $current_cost * 0.05 );
        }
        
        return $rates;
    }; 
             
    // The hook
    add_filter( 'woocommerce_package_rates', 'chicodarave_woocommerce_package_rates', 10, 2 );

    Não testei, mas teste e me diga no que deu.
    Abraços

    • Esta resposta foi modificada 2 meses atrás por  Mário Valney. Razão: Correção do método para todas as rates
    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Ah. A sugestão anterior é para aumentar 5% do valor do frete ao frete. Se for 5% do valor do carrinho, é outro código, mas creio que agora você consegue chegar nele.

    Abraços!

    chicodarave

    (@chicodarave)

    Funcionou sim Mário!
    Mas era isso mesmo, somente sobre o frete.
    Muito obrigado!

    Mário, aquele foreach vai fazer uma estrutura de repetição dentro de $rates que é um array certo?
    Seria um array com cada forma de envio? (tipo PAC, Sedex?)
    Eu poderia fazer uma comparação, por exemplo, se o valor da forma de frete for menos que 10% do valor do pedido eu poderia zerar o valor e deixar ele grátis?

    Obrigado.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Acho que a melhor forma de saber seria testando.

    Na dúvida, faz um print_r ou imprime no LOG.

    Abraços

    Deu certo sim Mário!
    Mas assim, só aparece “PAC” “Sedex” não aparece o valor R$0,00 ou Frete grátis então fica meio confuso.
    Como eu faço pra mudar o label do frete e adicionar isso?
    Eu encontrei um meio mas é por outro hook dai não sei como faz pra juntar tudo.
    Eu queria dar frete grátis caso o valor da modalidade de frete fosse menor que 5% do valor do pedido.
    Eu consigo fazer tudo, menos trocar o label.

    Obrigado.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    O label do frete é feito nas configurações de entrega o WooCommerce.

    Abraços

    Eu quero trocar pelo código, quando o valor do frete for zero ele vai adicionar GRÁTIS no nome do método de envio.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Não sei se é possível.
    Nessa array aí não teria como trocar algum label (ou algo do tipo)?

    Putz, não sei Mário, entendo muito pouco disso dai, tentei pesquisar bastante mas não achei nada, provavelmente estou procurando pelos termos errados, encontrei um outro filtro que troca mas não sei como juntar as duas coisas nem sei se seria possível ou certo fazer isso 🙁

Visualizando 14 respostas - 1 até 14 (de um total de 14)
  • Você deve estar logado para responder a este tópico.