FernandoAcosta.Netdocs

Regras por categoria, tag ou faixa de preço

2 min de leituraAtualizado há 5 dias

Regras por categoria, tag ou faixa de preço

O filtro wc_installments_simulator_settings permite sobrescrever qualquer configuração do plugin com base no produto sendo exibido. Esta página tem os exemplos mais comuns.

Por que usar este filtro

Os ajustes nas configurações do plugin valem pra todos os produtos. Quando você quer regras diferentes (ex: eletrônicos têm parcelamento maior, assinaturas não têm desconto à vista), use este filtro.

add_filter( 'wc_installments_simulator_settings', function( $settings, $product ) {
  // modifique $settings aqui
  return $settings;
}, 10, 2 );
  • $settings é um array com todas as configurações que aparecem no admin (mesmas chaves).
  • $product pode ser null em alguns contextos. Sempre valide antes de usar.

Receitas práticas

Mais parcelas para uma categoria

Eletrônicos podem parcelar até 12x; o resto da loja só até 6x.

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

Sem juros em produtos premium

Categoria premium ganha 6 parcelas sem juros, sem taxa.

add_filter( 'wc_installments_simulator_settings', function( $settings, $product ) {
  if ( $product && has_term( 'premium', 'product_cat', $product->get_id() ) ) {
    $settings['max_installments_interest_free'] = 6;
    $settings['fee'] = 0;
  }
  return $settings;
}, 10, 2 );

Desconto à vista diferente por tag

Produtos com a tag liquidacao recebem desconto extra.

add_filter( 'wc_installments_simulator_settings', function( $settings, $product ) {
  if ( $product && has_term( 'liquidacao', 'product_tag', $product->get_id() ) ) {
    $settings['discount'] = 15; // 15% à vista
  }
  return $settings;
}, 10, 2 );

Parcelamento por faixa de preço

Produtos acima de R$ 500 ganham 12x; abaixo, só 6x.

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

Mínimo de parcela maior em produtos baratos

Pra evitar parcelas microscópicas em produtos de baixo valor.

add_filter( 'wc_installments_simulator_settings', function( $settings, $product ) {
  if ( $product && $product->get_price() < 50 ) {
    $settings['min_installment'] = 10;
  }
  return $settings;
}, 10, 2 );

Sem desconto à vista em uma categoria

Assinaturas não recebem desconto à vista.

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

Combinar regras

Empilhe condições — só lembre que a última que escreve no $settings ganha.

add_filter( 'wc_installments_simulator_settings', function( $settings, $product ) {
  if ( ! $product ) return $settings;

  // Regra base por categoria
  if ( has_term( 'eletronicos', 'product_cat', $product->get_id() ) ) {
    $settings['max_installments'] = 12;
    $settings['fee'] = 1.99;
  }

  // Override em promoções
  if ( has_term( 'promo', 'product_tag', $product->get_id() ) ) {
    $settings['max_installments_interest_free'] = 6;
  }

  // Override pra alto valor
  if ( $product->get_price() >= 5000 ) {
    $settings['discount'] = 8; // mais desconto pro Pix
  }

  return $settings;
}, 10, 2 );

Onde colocar o código

  • functions.php do tema filho (recomendado).
  • Plugin de snippets como Code Snippets ou WPCode.

Não coloque no tema pai — atualizações sobrescrevem.

Lista de chaves disponíveis

Todas as chaves de $settings correspondem aos campos do admin. As mais úteis:

Chave Tipo Onde está no admin
discount número (%) Desconto no preço principal
discount_icon string (pix ou ticket) Ícone do desconto
text_after_price string Texto depois do preço
max_installments número Máximo de parcelas
max_installments_interest_free número Parcelas sem juros
min_installment número Parcela mínima
fee número (%) Taxa de juros no parcelamento
use_dynamic_fees yes/no Usar tabela dinâmica
dynamic_fees array Taxas de juros dinâmica
using_pagseguro yes/no Parcelamento via PagSeguro
always_show_discount yes/no Sempre exibir preço à vista

A lista completa está disponível inspecionando wp_options na chave wc_installments_simulator_settings.

Próximos passos

Foi útil?