✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Guia sobre como adicionar taxas personalizadas ao WooCommerce Checkout por código

40

Há alguns casos em que você pode precisar adicionar uma taxa aos totais do carrinho. Às vezes, apenas se uma determinada condição for atendida, por exemplo, dependendo dos totais do carrinho ou do local de envio. Com o WooCommerce, adicionar uma taxa é muito fácil – muito mais fácil do que adicionar um desconto de fato. Neste post vamos aprender como adicionar uma taxa personalizada ao WooCommerce.

O WooCommerce possui uma função integrada no objeto do carrinho para adicionar taxas. Tudo o que você precisa é conectar-se à ação correta e, com o objeto cart fornecido, chamar uma função para adicionar uma taxa. O WooCommerce exibirá automaticamente as taxas no carrinho e nos totais de checkout. Você decide o rótulo e o valor da taxa.

Guia sobre como adicionar taxas personalizadas ao WooCommerce Checkout por código

É importante observar que o valor da taxa não pode ser negativo – dando assim um desconto ao cliente. Esse “hack" costumava funcionar antes em versões mais antigas do WooCommerce, mas não mais.

Vamos aos detalhes do código! O único gancho com o qual você precisa se preocupar é woocommerce_cart_calculate_fees. Dentro deste gancho você pode obter o objeto cart chamando WC()->cart. Com esse objeto você pode chamar add_fee()que aceita quatro parâmetros (você provavelmente só precisa dos dois primeiros); add_fee($fee_name, $amount_in_float, $taxable_boolean, $tax_class_string). Os dois primeiros são autoexplicativos. O terceiro parâmetro é um booleano que decide se a taxa é tributável ou não. E o quarto é para fornecer uma classe de imposto para a taxa (se o terceiro parâmetro for verdadeiro). Mas pode ser deixado em branco para a classe fiscal padrão.

Adicionando uma taxa fixa

A adição de uma taxa personalizada é feita em sua forma mais simples, como esta:

O primeiro passo é evitar adicionar uma taxa se estivermos no admin ou se o Ajax estiver em andamento. Em seguida, chamamos add_fee()o objeto cart. Isso adicionará uma taxa chamada “Uma pequena taxa” com o valor de 5. O valor será em qualquer moeda que você tenha em sua loja. Se a moeda da loja estiver definida para dólares, ela se torna $ 5. Ajuste o nome e o valor de acordo com suas necessidades.

Adicionando uma taxa como uma porcentagem dos totais do carrinho

Se você quiser que o valor da taxa seja uma porcentagem do total do carrinho, basta calculá-lo de maneira diferente. Lembre-se que sempre temos acesso ao objeto do carrinho chamando WC()->carte a partir disso podemos buscar os totais.

O código acima adicionará uma taxa que equivale a 5% do total do carrinho, que é o total de itens do carrinho (get_cart_contents_total()) mais o custo de envio do carrinho (get_shipping_total()). Ajuste a taxa e quais totais incluir ou excluir no que você precisa.

Portanto, isso é muito bom, mas em alguns casos podemos querer personalizar quando adicionar uma taxa. Talvez você queira adicionar uma taxa apenas para um determinado método de envio, método de pagamento ou com base no total do carrinho. O processo é o mesmo, apenas adicionamos a taxa somente se nossas condições forem atendidas.

Adicionando uma taxa dependendo dos totais do carrinho

Digamos que você queira adicionar uma taxa apenas se os totais do carrinho estiverem abaixo de um determinado valor. Suponha que você queira adicionar uma taxa para lidar com pequenas quantias. Você poderia fazer assim:

Use WC()->cart->get_cart_contents_total()para obter o número flutuante do total do carrinho, excluindo o frete. (Se você quiser incluir o frete também, veja acima na adição de taxa percentual para saber como obter os totais de frete). Então faça suas comparações.

Você também pode virar e decidir adicionar uma taxa se o carrinho estiver acima de um determinado limite.

Adicionando uma taxa dependendo do local de envio

Você também pode adicionar uma taxa dependendo do local de envio, por exemplo, por país. Da mesma forma que obter o objeto do carrinho, podemos usar WC()->customerpara o objeto do cliente. Tenha em mente que quando o cliente não está logado e ainda não chegou ao caixa e preencheu seu endereço, os valores do objeto cliente estarão vazios ou os padrões definidos em sua loja.

Você precisará saber o código do país – aqui está uma boa referência de código do país. Aqui está um exemplo de adição de uma taxa se o cliente for da Noruega.

Adicionando uma taxa dependendo do método de envio escolhido

Obter o método de envio é um pouco mais complicado, pois depende da sessão do usuário e não vem em um “formato agradável e compreensível”. Você pode obter o método de envio escolhido atual com WC()->session->get('chosen_shipping_methods'). Observe que ele diz “métodos” e não “método”, então isso retorna uma matriz. Normalmente, o array contém um elemento, onde cada elemento consiste em strings de ID de envio, dois pontos e um ID depois dele. Eu recomendo usar métodos de string PHP para verificar se a string contém o ID – por exemplo strpos()– e não se é igual.

Adicionando uma taxa dependendo do método de pagamento escolhido

Se você quiser adicionar uma taxa dependendo de qual gateway de pagamento foi escolhido, você pode obter o gateway de pagamento escolhido atual WC()->session->get('chosen_payment_method')e fazer uma comparação com seu nome (por exemplo, para Paypal retornaria 'paypal'). No entanto, você pode notar que quando o cliente está alternando entre os gateways de pagamento no checkout, a taxa não é adicionada ou removida dinamicamente. Portanto, você precisará adicionar algum Javascript adicional para garantir que o WooCommerce atualize o carrinho para que sua taxa funcione de forma consistente.

Para adicionar o Javascript, conectamos o woocommerce_review_order_before_paymentque ocorre logo antes da caixa de pagamento no checkout e saída do script inline. Tudo o que o código faz é acionar o gancho do WooCommerce update_checkoutsempre que a escolha do método de pagamento é alterada. Isso garante que todos os métodos e ganchos PHP necessários sejam executados (incluindo o gancho de taxa) toda vez que o carrinho for atualizado.

Adicionando uma taxa dependendo de quais produtos estão no carrinho

Já mencionei isso antes, mas vou mencioná-lo novamente: você tem acesso total ao objeto do carrinho com WC()->cart, então você pode pesquisar o conteúdo do carrinho por um ID de produto específico e adicionar uma taxa se ele existir no carrinho.

Usando WC()->cart->get_cart_contents()retorna uma matriz de todos os produtos no carrinho. Você pode fazer um loop por isso com um loop simples foreache verificar cada produto na condição desejada ou, se simplesmente quiser verificar os IDs, poderá extrair todos os IDs do produto em uma linha, assim:

O exemplo abaixo mostra como você pode adicionar uma taxa dependendo do carrinho conter um produto de um determinado ID:

Você também pode usar operações semelhantes para extrair quantidades se precisar adicionar uma taxa quando um cliente adicionar uma quantidade muito grande de algo.

Para concluir

Este post mostrou como adicionar uma taxa personalizada e, por meio de cinco exemplos, como adicionar uma taxa dependendo de determinadas condições. Essas condições foram tudo o que encontrei e pude pensar, e elas devem, no mínimo, dar dicas sobre como obter informações para personalizar ainda mais suas condições. Deixe-me saber se eles funcionaram para você, ou se você encontrou outra condição que eu não pensei!

Fonte de gravação: awhitepixel.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação