
Woocommerce Brasil
Produto variável no WooCommerce 9.x mostra na listagem algo como R$ 49,00 – R$ 129,00. O cliente bate o olho no número maior, acha caro e nem abre a página. Trocar isso por A partir de R$ 49,00 é um filtro só no functions.php do tema filho.
add_filter( 'woocommerce_variable_price_html', 'rt_preco_a_partir_de', 10, 2 );
function rt_preco_a_partir_de( $price_html, $product ) {
$min = $product->get_variation_price( 'min', true );
$max = $product->get_variation_price( 'max', true );
if ( $min === $max ) {
return wc_price( $min ) . $product->get_price_suffix();
}
return sprintf( 'A partir de %s', wc_price( $min ) ) . $product->get_price_suffix();
} Repare que eu não escrevo valor na mão. O get_variation_price( 'min', true ) devolve o menor preço já com o tratamento de imposto de exibição da loja, e o wc_price() aplica símbolo, separador e casas decimais que você configurou. O filtro recebe o preço já com o sufixo, então quem monta a string do zero precisa somar o get_price_suffix() de novo. E quando todas as variações custam o mesmo o intervalo nem existe: por isso o teste de igualdade.
O filtro pega na hora. Quem atrasa são os preços: o mínimo e o máximo saem de um cache por produto, então mexer numa variação por importação ou direto no banco deixa a vitrine desatualizada.
# apaga TODOS os transientes do site, não só os do Woo
sudo -u www-data wp transient delete --all
# object cache persistente (Redis, Memcached) não sai no comando acima
sudo -u www-data wp cache flush Dentro de um importador o cirúrgico é melhor: chame wc_delete_product_transients( $product_id ) depois de salvar cada produto. Se o intervalo insistir, olhe o cache de página do nginx e o plugin de cache antes de culpar o filtro.
Se travou nisso e precisa de ajuda, me chama aqui.
Grid do admin sem checkbox e com o botão Ações vazio? Falta o selectionsColumn e o nó massaction no listing.xml,…
Criou parts/header.html e o Editor de Site não lista a parte? Declare templateParts no theme.json e apague a versão salva…
Como matar o aviso "Image elements do not have explicit width and height" do Lighthouse trocando o img manual do…
O primeiro POST via AJAX passa e o segundo estoura 403 porque o token foi regenerado. Envie o hash no…
O certbot diz que renovou, o navegador insiste que o certificado expirou. Compare as datas com openssl e crie o…
O campo aparece cinza no painel avisando que o valor vem de arquivo? Descubra o caminho da chave, remova do…