FernandoAcosta.Net

Regras diferentes por categoria, tag ou preço

1 min de leituraAtualizado há 2 semanas3.0.1

As configurações da tela valem pra loja inteira. Pra mudar só em parte dos produtos, use o filtro wc_installments_simulator_settings, que recebe o produto.

Onde colocar o código

No functions.php do tema filho ou num plugin de snippets. Não edite os arquivos do plugin.

O que muda e onde

O filtro roda pra cada produto na página do produto, na listagem, no schema, nos feeds e no desconto do checkout (item a item). Quando não há produto, como no total do carrinho, $product chega null e vale a regra geral.

Chaves mais usadas:

Chave Tipo Campo da tela
discount float Desconto no preço principal
fee float Taxa de juros no parcelamento
max_installments int Máximo de parcelas
max_installments_interest_free int Parcelas sem juros
min_installment float Parcela mínima
product_layout / loop_layout string Modelo de exibição
enable_schema yes/no Preço do Pix no schema (sem campo na tela)

Desconto diferente por categoria

add_filter( 'wc_installments_simulator_settings', function ( $settings, $product ) {
  if ( $product && has_term( 'eletronicos', 'product_cat', $product->get_id() ) ) {
    $settings['discount'] = 5;
  }
  return $settings;
}, 10, 2 );

O checkout aplica 5% nos itens dessa categoria e o desconto geral nos outros.

Mais parcelas sem juros acima de um valor

add_filter( 'wc_installments_simulator_settings', function ( $settings, $product ) {
  if ( $product && (float) $product->get_price() >= 500 ) {
    $settings['max_installments_interest_free'] = 6;
  }
  return $settings;
}, 10, 2 );

Sem desconto no Pix pra uma tag

add_filter( 'wc_installments_simulator_settings', function ( $settings, $product ) {
  if ( $product && has_term( 'sem-desconto', 'product_tag', $product->get_id() ) ) {
    $settings['discount'] = 0;
  }
  return $settings;
}, 10, 2 );

Produtos variáveis

Em variações, $product é a variação. Pra checar categoria ou tag, use o produto pai:

$id = $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id();

Artigos relacionados

Foi útil?