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

Guia: Alterar preços no WooCommerce por código

49

Este post é para você que deseja adicionar um código que ajuste os preços em sua loja virtual WordPress WooCommerce. Você pode aumentar os preços ou descontá-los. E como e de onde vêm os ajustes, depende inteiramente do seu caso. Sua loja virtual pode operar com descontos percentuais definidos para cada usuário registrado, uma configuração global personalizada nas configurações do WooCommerce, uma soma fixa codificada ou algo definido em cada produto ou categoria de produto.

Eu tentei fazer o código o mais geral possível para que você possa ajustá-lo ao seu caso. No meu caso os ajustes de preço vêm de um desconto percentual adicionado como meta do usuário.

O código é atualizado para funcionar no WooCommerce 3.xe acima. Não posso garantir que funcionará para versões inferiores.

Etapa 1: crie um lugar para seu código

O primeiro passo é fácil; você precisa de um lugar para adicionar seu código. Isso depende inteiramente de você. Você pode adicionar isso diretamente no seu tema functions.phpou em algum lugar em seus arquivos de plugin. Eu gosto de trabalhar com classes que vão manter tudo bem junto em um só lugar. Por uma questão de simplicidade, colocarei a classe em um subdiretório /src/no meu tema e o incluirei e instanciarei em functions.php.

require_once(get_stylesheet_directory().'/src/ChangePrices.php'); new ChangePrices();

Modifique esta etapa para se adequar ao seu caso.

Etapa 2: decidir como os ajustes de preço devem funcionar

Este passo já pode estar claro para você – é aqui que você precisa saber como e onde obter o ajuste de preço. O objetivo final deve ser um número com o qual você soma, subtrai, multiplica ou divide os preços.

No meu caso tenho uma meta de usuário em cada usuário que contém uma porcentagem de desconto; um número entre 0 e 99. O administrador do site pode definir um desconto para cada usuário. Não mostrarei o código para adicionar o meta campo do usuário, pois isso pode não ser para você e é feito facilmente com, por exemplo, Advanced Custom Fields.

Na minha classe eu mantenho uma variável de classe que no construtor será definida como um multiplicador. Dependendo se um usuário está logado, vou buscar o desconto salvo do usuário e criar um multiplicador a partir dele. Como padrão, o multiplicador deve ser 1. Preço 1 = mesmo preço de antes. Mas para um desconto de, por exemplo, 10%, o multiplicador seria 0,9. Preço 0,9 = preço com desconto de 10%.

Agora que tenho um multiplicador pronto para usar, é hora de analisar o ajuste de preços no WooCommerce.

Passo 3: Filtros de preços no WooCommerce

No WooCommerce há um filtro para tipos de produtos simples, agrupados e externos e outro para tipos de produtos variáveis. Eu recomendo que você adicione os dois filtros para cobrir todos os tipos de produtos. Além disso, o WooCommerce opera com três filtros de preços adicionais:

  • Preços normais (woocommerce_product_get_regular_pricee woocommerce_product_variation_get_regular_price)
  • Preços de venda (woocommerce_product_get_sale_pricee woocommerce_product_variation_get_sale_price)
  • O preço ativo atual (woocommerce_product_get_pricee woocommerce_product_variation_get_price). O preço ativo atual será obtido do preço normal ou do preço de venda.

Agora, você pode simplesmente filtrar o preço ativo atual e chamá-lo de um dia, mas depende de como você deseja lidar com a exibição de preços em sua loja virtual. Lembre-se de que os produtos em promoção por padrão mostram o preço antigo (preço normal) tachado e o preço de venda (preço ativo) ao lado. Se você filtrar apenas x_get_pricee um produto estiver em promoção, o preço antigo será mostrado sem desconto.

Por isso, escolho filtrar tanto o preço atual ativo (x_get_price) quanto o preço normal (x_get_regular_price), pois não quero confundir os usuários da minha loja virtual.

Escrevendo o filtro de preços

Todos os quatro filtros se referem à mesma função. Dentro da função, simplesmente multiplicamos o preço fornecido pela variável de classe. Lembre-se de que, se nenhum desconto for definido, o multiplicador será 1, o que não resultará em alteração no preço.

Observe que todos os filtros fornecem o objeto do produto como segundo parâmetro. Se você quiser ajustar os preços dependendo dos produtos, poderá ajustar o código para isso.

Se você verificar sua loja virtual enquanto estiver conectado como usuário com desconto, agora verá preços com desconto! No entanto, ainda não terminamos. O WooCommerce fez algumas alterações na versão 2.4.7 (leia mais aqui) que afetam os preços dinâmicos de produtos variáveis.

Como lidar com preços de produtos variáveis

Para fazer a precificação dinâmica funcionar em produtos variáveis, você deve adicionar os filtros mencionados na postagem do blog vinculada acima; woocommerce_variation_prices_price(e o filtro de preço normal correspondente woocommerce_variation_prices_regular_price) e o filtro woocommerce_get_variation_prices_hash. O filtro de hash está lidando com o cache interno do WooCommerce – e precisamos dizer ao WooCommerce para limpá-lo corretamente quando modificarmos os preços por código.

Os dois primeiros filtros de preço seguem o mesmo procedimento de adjustPrice(), porém eu atribuo uma função diferente para eles porque os parâmetros são diferentes. Quanto à função de filtro de hash, precisamos adicionar ao array de hash para identificar quando o cache deve ser limpo. Adicionar o ID do usuário é uma boa ideia, pois o multiplicador é exclusivo para cada usuário.

Finalmente, deve ser isso!

Observe que você tem acesso ao objeto produto completo em todos os filtros (até o objeto variação nos dois últimos). Isso é útil para os casos em que você deseja ajustar os preços com base nas informações do produto; como excluir determinados produtos do desconto ou aplicar um desconto com base nas categorias de um produto. Deve ser bastante simples para você ajustar o código para o que você precisa para o seu caso.

O código final completo

Como de costume, espero que você tenha aprendido algo seguindo este post passo a passo, mas vou fornecer a classe completa para referência:

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