• Estou aqui quebrando a cabe?a numa loja de um cliente, tentando entender porque n?o consigo colocar os fretes na ordem que desejo. Isso é, inclusive, uma quest?o antiga para mim, e eu sempre atribuí isso ao WooCommerce ordenando os fretes pelo valor.

    Mas depois de conversar com uns colegas e ent?o comprovar na prática, descobri que é o plugin do Melhor Envio que está for?ando a ordena??o dos fretes do mais barato para o mais caro. Ou seja: quando o plugin do Melhor Envio está ativado (mesmo que eu n?o tenha usado ele na aba Entrega) todos os fretes exibidos no carrinho e no checkout s?o ordenados do mais barato para o mais caro.

    Isso n?o seria nenhum problema, afinal que cliente n?o quer frete barato… Mas é um grande problema quando a loja oferece op??es como Retirada em loja onde o valor é zero e portanto essa op??o acaba aparecendo primeiro, sempre. O que pode causar alguns problemas como clientes que n?o prestam aten??o finalizando pedidos sem escolher um frete pago.

    Sendo assim recomendo que o plugin seja modificado para remover esta ordena??o for?ada e n?o solicitada. Pois em lojas onde necessitamos colocar as op??es de frete em uma ordem específica, isso torna-se impossível se o plugin do Melhor Envio estiver instalado.

    Para comprovar isso na prática:

    1. Adicione algumas op??es de frete à loja e coloque a op??o de frete Retirada no local (ou taxa fixa ou qualquer outra que prefira) por último.
    2. Simule uma compra e veja a ordem dos fretes como ela aparece no carrinho.
    3. Instale e ative o plugin do Melhor Envio.
    4. Verifique novamente no carrinho que a op??o Retirada no local agora aparece em primeiro.
Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter denisgomesfranco

    (@denisgomesfranco)

    T? pegando fogo hoje ??????

    Peguei o código fonte do plugin e fui olhar o código. Eis que ent?o eu descubro no arquivo melhor-envio-beta.php o seguinte trecho de código na linha 294:

            add_filter('woocommerce_package_rates', 'orderingQuotationsByPrice', 10, 2);
            function orderingQuotationsByPrice($rates, $package)
            {
                uasort($rates, function ($a, $b) {
                    if ($a == $b) return 0;
                    return ($a->cost < $b->cost) ? -1 : 1;
                });
                return $rates;
            }

    E está aí a resposta de porque o plugin do Melhor Envio for?a a ordena??o dos fretes pelo pre?o, coisa que deveria ser completamente opcional (via configura??o no painel) ou nem existir pra come?o de conversa.

    E ent?o nosso querido StackOverflow oferece a solu??o para remover este filtro indesejado, que eu adaptei para funcionar neste caso:

    function remove_ordenacao () {
    	remove_filter('woocommerce_package_rates', 'orderingQuotationsByPrice', 10);
    }
    add_action('init', 'remove_ordenacao');

    Feito isso, o site do meu cliente finalmente funcionou do jeito que precisamos com rela??o a escolha do frete.

    Mandou muito bem!!

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Plugin trocando a ordem dos fretes à for?a’ is closed to new replies.