
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.
O meta está no banco mas some do /wp-json/wp/v2/posts. Veja o register_post_meta certo, com single, type, schema de array e…
Escreva 31 de agosto de 2026 em PHP 8.3 sem aquele array com os doze meses, usando IntlDateFormatter com pattern…
Listagem de CPT com meta_query que demora segundos: veja o EXPLAIN da query do WP_Query e o índice composto em…
Post com Perdeu o agendamento e backup que não roda há dias: inspecione a fila do WP-Cron, apague a trava…
Como aposentar o plugin AMP sem transformar centenas de URLs /amp/ indexadas em 404: o rewrite 301 no nginx, a…
A loja cai com OOM command not allowed when used memory > maxmemory: ajuste a maxmemory-policy do Redis e separe…