
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.
debug.log crescendo em gigabytes com avisos de propriedade dinâmica. Veja como isolar o plugin culpado, corrigir a classe e silenciar…
O before ou around declarado no di.xml nunca dispara. Confira o Interceptor em generated e descarte as três causas que…
VPS de 2 GB onde o mysqld morre de madrugada e o site volta com erro de conexão. Como confirmar…
Regex com cinco parênteses e ninguém lembra se a data é $matches[2] ou $matches[3]. Nomeie os grupos e leia o…
Erro The consumer isn't authorized to access resources ao chamar a REST do Magento 2.4.8? Ative a integração, libere os…
Bots batendo centenas de POST por minuto no login derrubam a CPU. Configure limit_req_zone no nginx e devolva 429 antes…