Atualizado em: 23 de Abril de 2026

Documentação: DPCSJ

Descontos e Parcelas com/sem juros para WooCommerce (WooTatitas) — Guia de Integração para Desenvolvedores

Guia rápido para programadores que desejam usar este plugin como base em seus projetos.

Aviso importante

Este plugin pode mudar funcionalidades sem aviso prévio para acompanhar atualizações do WooCommerce.

Toda customização é de responsabilidade do desenvolvedor. Não edite os arquivos originais do plugin. Faça suas alterações em código externo:

  • um plugin próprio (preferencialmente must‑use),
  • um plugin adicional do seu projeto, ou
  • o functions.php de um tema filho.
  • Utilize hooks (actions/filters) documentados. Alterações diretas no plugin serão sobrescritas em atualizações.

1. Visão geral

Este plugin adiciona duas camadas principais ao WooCommerce: descontos por método de pagamento e exibição de parcelamento com ou sem juros. O comportamento confirmado no código está concentrado no catálogo, na página interna do produto, no checkout e na edição de produtos e variações no painel.
Na prática, o plugin permite que o desenvolvedor integre regras de desconto por gateway, leia e reaproveite percentuais configurados, reposicione a saída visual usando hooks do WooCommerce e personalize o comportamento analítico do desconto no pedido. A parte de parcelamento confirmada no plugin é de exibição informativa. Ela não configura o parcelamento real do gateway de pagamento.

A integração externa confirmada é principalmente por PHP, WooCommerce hooks, metadados de produto/pedido, opções públicas e um pequeno ponto de apoio em JavaScript no frontend.

2. Pré-requisitos

Requisitos confirmados no plugin:

  • WordPress 6.0 ou superior
  • PHP 8.0 ou superior
  • WooCommerce ativo
  • WordPress não pode estar em modo Multisite
  • Usuário com capacidade manage_woocommerce para acessar e configurar o plugin no painel
  • Pelo menos um gateway de pagamento registrado no WooCommerce para que as regras por método façam sentido

Observação: o plugin usa e lê gateways do WooCommerce e de plugins de pagamento compatíveis, mas a lista de gateways disponíveis depende do ambiente instalado.

3. Arquitetura de integração

O fluxo confirmado no plugin é este:

1. O plugin carrega suas funções principais.

2. No frontend:

  • exibe mensagens de desconto na página do produto e no catálogo
  • exibe mensagens de parcelamento na página do produto e no catálogo
  • no checkout, calcula um desconto como fee negativa com base no método de pagamento escolhido
  • salva metadados no pedido para o desconto aplicado
  • cria uma linha de cupom sintética no pedido para análise do WooCommerce, se esse comportamento não for desativado por filtro

3. No painel:

  • adiciona campos por produto simples
  • adiciona campos por variação
  • persiste descontos e flags de exibição em metadados do produto

Pontos públicos confirmados para integração:

  • uma action própria de bootstrap
  • alguns filters próprios para comportamento do checkout e analytics
  • funções PHP globais de leitura e resolução de desconto
  • funções de renderização reutilizáveis
  • opções públicas do plugin
  • metadados de produto, variação, pedido e fee item
  • classes CSS e um helper JS global no frontend

Limites entre público e interno:

  • Público ou claramente integrável: resolução de desconto, leitura de configurações, reposicionamento das saídas visuais, filtros de analytics, metadados e opções consumidas pelo plugin
  • Interno ou não documentado aqui: licenciamento, atualização privada, rechecagens protegidas, rotinas sensíveis de proteção e qualquer mecanismo interno que não tenha sido claramente pensado para integração externa

Observação importante: a parte de parcelamento confirmada no código é visual. O próprio plugin informa no painel que o parcelamento real e os juros do pagamento são responsabilidade do gateway.

4. Hooks disponíveis para desenvolvedores

wootatitas_dpcsj_bootstrap

Tipo: Action
Quando é executado: Durante plugins_loaded, com prioridade 5, após o carregamento mínimo do plugin.

Parâmetros: Nenhum
Retorno: Não se aplica

Exemplo de uso:

add_action(‘wootatitas_dpcsj_bootstrap’, function () {
if (!function_exists(‘wootatitas_dpcsj_get_product_discount’)) {
return;
}

$desconto = wootatitas_dpcsj_get_product_discount(123, ‘pix’);

if ($desconto > 0) {
// Sua integração aqui.
}
});

wootatitas_dpcsj_use_wc_notice

Tipo: Filter
Quando é executado: Quando a função interna de aviso em formato wc_print_notice() é chamada manualmente.

Parâmetros:

$enabled (bool) — define se o aviso deve ser exibido
Retorno: bool

Exemplo de uso:

add_filter(‘wootatitas_dpcsj_use_wc_notice’, function ($enabled) {
return false;
});

wootatitas_dpcsj_analytics_use_coupons_row

Tipo: Filter
Quando é executado: Durante a criação do pedido, antes de o plugin adicionar a linha sintética de cupom para analytics.

Parâmetros:

$enabled (bool) — define se a linha de cupom será criada
$order (WC_Order) — pedido em criação
$data (array) — dados do checkout
Retorno: bool

Exemplo de uso:

add_filter(‘wootatitas_dpcsj_analytics_use_coupons_row’, function ($enabled, $order, $data) {
return false;
}, 10, 3);

wootatitas_dpcsj_is_fee_discount

Tipo: Filter
Quando é executado: Durante a identificação da fee que deve ser tratada como desconto do plugin na etapa de analytics.

Parâmetros:

$is_plugin_fee (bool) — resultado atual da identificação
$fee (object) — fee do carrinho
$order (WC_Order) — pedido em criação
Retorno: bool

Exemplo de uso:

add_filter(‘wootatitas_dpcsj_is_fee_discount’, function ($is_plugin_fee, $fee, $order) {
if (!empty($fee->name) && strpos($fee->name, ‘Desconto Parceiro’) !== false) {
return true;
}

return $is_plugin_fee;
}, 10, 3);

wootatitas_dpcsj_analytics_coupon_code

Tipo: Filter
Quando é executado: Quando o plugin monta o código do cupom sintético usado para analytics.

Parâmetros:

$coupon_code (string) — código atual
$method (string) — método de pagamento sanitizado
$order (WC_Order) — pedido em criação
$total_discount (float) — valor total do desconto
Retorno: string

Exemplo de uso:

add_filter(‘wootatitas_dpcsj_analytics_coupon_code’, function ($coupon_code, $method, $order, $total_discount) {
return ‘desconto-metodo-‘ . $method;
}, 10, 4);

5. Funções, métodos ou APIs públicas para integração

wootatitas_dpcsj_get_chosen_payment_method()

Finalidade: Retornar o método de pagamento atualmente escolhido no checkout.
Como usar: Use no contexto de checkout ou quando houver sessão ativa do WooCommerce.

Parâmetros: Nenhum

Retorno: string

Exemplo de uso:

$method = function_exists(‘wootatitas_dpcsj_get_chosen_payment_method’)
? wootatitas_dpcsj_get_chosen_payment_method()
: ”;

wootatitas_dpcsj_get_product_discount($product_id, $method_id)

Finalidade: Retornar o desconto efetivo de um produto ou variação para um método de pagamento.

Como usar: A função respeita a hierarquia confirmada no código: variação ou produto, com fallback para o valor global.

Parâmetros:

$product_id (int) — ID do produto ou variação
$method_id (string) — ID do gateway

Retorno: float

Exemplo de uso:

$desconto = 0.0;

if (function_exists(‘wootatitas_dpcsj_get_product_discount’)) {
$desconto = wootatitas_dpcsj_get_product_discount(123, ‘pix’);
}

wootatitas_dpcsj_get_product_message_setting($product_id, $method_id)

Finalidade: Ler a configuração de exibição de mensagem para um produto ou variação em um método específico.
Como usar: Útil para integrações que precisam saber se a mensagem daquela forma de pagamento deve ser mostrada.

Parâmetros:

$product_id (int) — ID do produto ou variação
$method_id (string) — ID do gateway

Retorno: int — normalmente 1 ou 0

Exemplo de uso:

if (function_exists(‘wootatitas_dpcsj_get_product_message_setting’)) {
$mostrar = wootatitas_dpcsj_get_product_message_setting(123, ‘pix’);
}

wootatitas_dpcsj_get_product_cart_messages_setting($product_id)

Finalidade: Ler a configuração do produto ou variação para mensagens de checkout.
Como usar: Útil para verificar se o produto possui override local para exibição no checkout.

Parâmetros:

$product_id (int) — ID do produto ou variação

Retorno: int — 1, 0 ou -1 quando não há override

Exemplo de uso:

if (function_exists(‘wootatitas_dpcsj_get_product_cart_messages_setting’)) {
$flag = wootatitas_dpcsj_get_product_cart_messages_setting(123);
}

wootatitas_dpcsj_resolve_discount_percent($product_or_id, $method_id)

Finalidade: Resolver o percentual final de desconto a partir da hierarquia usada pelo plugin.
Como usar: Pode receber objeto WC_Product ou ID.

Parâmetros:

$product_or_id (WC_Product|int) — produto, variação ou ID
$method_id (string) — ID do gateway

Retorno: float

Exemplo de uso:

global $product;

if ($product && function_exists(‘wootatitas_dpcsj_resolve_discount_percent’)) {
$percent = wootatitas_dpcsj_resolve_discount_percent($product, ‘pix’);
}

wootatitas_dpcsj_collect_product_messages($product_or_id)

Finalidade: Retornar os métodos de pagamento que devem gerar mensagem para um produto, junto com seus percentuais.
Como usar: Útil para montar sua própria saída visual em vez de usar a renderização padrão do plugin.

Parâmetros:

$product_or_id (WC_Product|int) — produto, variação ou ID

Retorno: array

Exemplo de uso:

if (function_exists(‘wootatitas_dpcsj_collect_product_messages’)) {
$mensagens = wootatitas_dpcsj_collect_product_messages(123);
}

wootatitas_dpcsj_render_discount_block($context, $title, $percent)

Finalidade: Renderizar o bloco HTML padrão de desconto do plugin.
Como usar: Use quando quiser reaproveitar a mesma marcação visual do plugin em outro hook.

Parâmetros:

$context (string) — single ou loop
$title (string) — título do método de pagamento
$percent (float) — percentual do desconto

Retorno: Saída HTML direta

Exemplo de uso:

add_action(‘woocommerce_before_add_to_cart_form’, function () {
if (!function_exists(‘wootatitas_dpcsj_render_discount_block’)) {
return;
}

wootatitas_dpcsj_render_discount_block(‘single’, ‘Pix’, 5);
});

wootatitas_dpcsj_display_discount_messages_single()

Finalidade: Renderizar a saída padrão de mensagens de desconto na página interna do produto.
Como usar: Pode ser removida e recolocada em outro hook do WooCommerce.

Parâmetros: Nenhum

Retorno: Saída HTML direta

Exemplo de uso:

add_action(‘wp’, function () {
if (!function_exists(‘wootatitas_dpcsj_display_discount_messages_single’)) {
return;
}

remove_action(‘woocommerce_single_product_summary’, ‘wootatitas_dpcsj_display_discount_messages_single’, 15);
add_action(‘woocommerce_before_add_to_cart_form’, ‘wootatitas_dpcsj_display_discount_messages_single’, 5);
});

wootatitas_dpcsj_display_discount_messages_loop()

Finalidade: Renderizar a saída padrão de mensagens de desconto no catálogo.
Como usar: Pode ser reposicionada com remove_action() e add_action().

Parâmetros: Nenhum

Retorno: Saída HTML direta

Exemplo de uso:

add_action(‘wp’, function () {
if (!function_exists(‘wootatitas_dpcsj_display_discount_messages_loop’)) {
return;
}

remove_action(‘woocommerce_after_shop_loop_item_title’, ‘wootatitas_dpcsj_display_discount_messages_loop’, 11);
add_action(‘woocommerce_after_shop_loop_item’, ‘wootatitas_dpcsj_display_discount_messages_loop’, 5);
});

wootatitas_dpcsj_display_installment_options_single()

Finalidade: Renderizar a saída padrão de parcelamento na página interna do produto.
Como usar: Pode ser reaproveitada ou reposicionada em outro hook.

Parâmetros: Nenhum

Retorno: Saída HTML direta

Exemplo de uso:

add_action(‘wp’, function () {
if (!function_exists(‘wootatitas_dpcsj_display_installment_options_single’)) {
return;
}

remove_action(‘woocommerce_single_product_summary’, ‘wootatitas_dpcsj_display_installment_options_single’, 10);
add_action(‘woocommerce_before_add_to_cart_form’, ‘wootatitas_dpcsj_display_installment_options_single’, 8);
});

wootatitas_dpcsj_display_installment_options_loop()

Finalidade: Renderizar a saída padrão de parcelamento no catálogo.
Como usar: Pode ser reposicionada em outro ponto do loop do WooCommerce.

Parâmetros: Nenhum

Retorno: Saída HTML direta

Exemplo de uso:

add_action(‘wp’, function () {
if (!function_exists(‘wootatitas_dpcsj_display_installment_options_loop’)) {
return;
}

remove_action(‘woocommerce_after_shop_loop_item_title’, ‘wootatitas_dpcsj_display_installment_options_loop’, 15);
add_action(‘woocommerce_after_shop_loop_item’, ‘wootatitas_dpcsj_display_installment_options_loop’, 8);
});

window.wootatitasApplyDiscountClasses()

Finalidade: Reaplicar classes e ícones do plugin em elementos que foram inseridos dinamicamente no DOM.
Como usar: Útil quando o tema ou outro script injeta conteúdo depois do carregamento inicial.

Parâmetros: Nenhum

Retorno: Não se aplica

Exemplo de uso:

document.addEventListener(‘DOMContentLoaded’, function () {
if (typeof window.wootatitasApplyDiscountClasses === ‘function’) {
window.wootatitasApplyDiscountClasses();
}
});

6. Endpoints, AJAX, REST API ou Webhooks

6.1. Opções globais de desconto

Option nameUso
wootatitas_dpcsj_habilitar_mensagensativa ou desativa as mensagens de desconto
wootatitas_dpcsj_discount_{gateway_id}percentual global de desconto por gateway
wootatitas_dpcsj_message_{gateway_id}define se a mensagem daquele gateway aparece no catálogo e página do produto

6.2. Opções globais de parcelamento

Option nameUso
wootatitas_dpcsj_parcelamento_tiposem_juros ou com_juros
wootatitas_dpcsj_juros_parcelapercentual de juros por parcela
wootatitas_dpcsj_prefixotexto antes da quantidade de parcelas
wootatitas_dpcsj_sufixotexto depois da quantidade de parcelas
wootatitas_dpcsj_qtd_parcelasquantidade total de parcelas
wootatitas_dpcsj_categorias_parcelamentocategorias que devem exibir parcelamento

6.3. Opções visuais relevantes

Option nameUso
wootatitas_dpcsj_black_fridayalterna o CSS do modo Black Friday
wootatitas_dpcsj_icone_pixliga ou desliga ícone de Pix
wootatitas_dpcsj_icone_cartaoliga ou desliga ícone de cartão
wootatitas_dpcsj_icone_boletoliga ou desliga ícone de boleto
wootatitas_dpcsj_icone_parcelasliga ou desliga ícone de parcelamento
wootatitas_dpcsj_modo_movimentoativa a animação textual das mensagens

6.4. Metadados de produto e variação

Meta keyUso
_wootatitas_dpcsj_habilitar_mensagens_produtooverride local para mensagens no checkout
_wootatitas_dpcsj_discount_{gateway_id}desconto específico do produto ou variação
_wootatitas_dpcsj_message_{gateway_id}flag de exibição da mensagem daquele gateway

6.5. Metadados de pedido e fee item

Meta keyUso
_dpcsj_discount_totaltotal do desconto aplicado ao pedido
_dpcsjmarca a fee como pertencente ao plugin
_dpcsj_methodmétodo de pagamento usado no desconto
_dpcsj_amountvalor da fee vinculada ao desconto

6.6. Classes CSS de saída

ClasseUso
.wootatitas-dpcsj-prefix-single-msgmensagem principal de desconto na página do produto
.wootatitas-dpcsj-prefix-loop-msgmensagem principal de desconto no catálogo
.wootatitas-dpcsj-discount-singlebloco auxiliar de desconto no single
.wootatitas-dpcsj-discount-loopbloco auxiliar de desconto no loop
.wootatitas-dpcsj-installment-singlemensagem de parcelamento na página do produto
.wootatitas-dpcsj-installment-loopmensagem de parcelamento no catálogo

6.7. Dados JS confirmados no frontend

EstruturaUso
window.wootatitas_dpcsj_iconsflags localizadas do PHP para ícones de Pix, cartão, boleto e parcelas
window.wootatitasApplyDiscountClasses()reaplica classes e ícones em conteúdos dinâmicos

7. Exemplos práticos de integração

Exemplo 1: ler o desconto efetivo de um produto para um gateway

add_action(‘wootatitas_dpcsj_bootstrap’, function () {
if (!function_exists(‘wootatitas_dpcsj_resolve_discount_percent’)) {
return;
}

$product_id = 123;
$percentual = wootatitas_dpcsj_resolve_discount_percent($product_id, ‘pix’);

if ($percentual > 0) {
// Use o percentual em uma integração própria.
}
});

Exemplo 2: mudar o código do cupom sintético usado em analytics

add_filter(‘wootatitas_dpcsj_analytics_coupon_code’, function ($coupon_code, $method, $order, $total_discount) {
return ‘gateway-‘ . $method . ‘-desconto’;
}, 10, 4);

Exemplo 3: impedir a criação da linha sintética de cupom

add_filter(‘wootatitas_dpcsj_analytics_use_coupons_row’, ‘__return_false’);

Exemplo 4: reposicionar a mensagem de desconto no catálogo

add_action(‘wp’, function () {
if (!function_exists(‘wootatitas_dpcsj_display_discount_messages_loop’)) {
return;
}

remove_action(‘woocommerce_after_shop_loop_item_title’, ‘wootatitas_dpcsj_display_discount_messages_loop’, 11);
add_action(‘woocommerce_after_shop_loop_item’, ‘wootatitas_dpcsj_display_discount_messages_loop’, 5);
});

Exemplo 5: ler o total do desconto salvo no pedido

add_action(‘woocommerce_admin_order_data_after_order_details’, function ($order) {
$total = (float) $order->get_meta(‘_dpcsj_discount_total’, true);

if ($total !== 0.0) {
echo ‘

Desconto DPCSJ: ‘ . wp_kses_post(wc_price($total)) . ‘

‘;
}
});

Exemplo 6: reaplicar ícones e classes depois de conteúdo dinâmico

jQuery(function () {
jQuery(document.body).on(‘updated_checkout’, function () {
if (typeof window.wootatitasApplyDiscountClasses === ‘function’) {
window.wootatitasApplyDiscountClasses();
}
});
});

9. Boas práticas

  • Faça integrações depois de plugins_loaded ou usando wootatitas_dpcsj_bootstrap.
  • Sempre valide function_exists() antes de chamar funções do plugin.
  • Trate produto simples e variação como casos diferentes, porque o plugin usa hierarquia distinta para desconto e mensagem.
  • Não presuma que a configuração visual de parcelamento altera o comportamento real do gateway.
  • Ao reposicionar saídas visuais, use remove_action() e add_action() nas funções globais do próprio plugin, em vez de editar os arquivos do plugin.
  • Ao depender de gateway, use o ID real do método de pagamento.
  • No checkout, considere que o desconto é calculado em contexto de sessão e método escolhido.
  • Para frontends dinâmicos, reaplique as classes do plugin após updates do WooCommerce.

10. Limitações e observações

O plugin permite integrar leitura de descontos, renderização visual, reposicionamento das mensagens, uso de filtros de analytics e leitura de metadados de produto e pedido.

Até o momento, não foram identificados no código como interface pública para terceiros:

  • API REST pública
  • webhooks públicos
    shortcodes
  • blocks do Gutenberg
  • custom post types
  • taxonomias próprias
  • templates sobrescrevíveis por arquivo de tema no padrão clássico de override
  • comandos WP-CLI públicos

A exibição de parcelamento é informativa. O código e a própria tela de configuração deixam claro que a responsabilidade pelo parcelamento real e pelos juros da transação é do gateway de pagamento.

Também existem funções auxiliares e rotinas administrativas no código-fonte que não foram tratadas aqui como superfície pública garantida de integração. Por segurança, esta documentação ficou restrita ao que aparece como interface utilizável de forma consistente por terceiros.

11. Resumo técnico

O plugin oferece integração principalmente por funções PHP globais, alguns filters próprios, metadados de produto e pedido, opções públicas e saídas visuais que podem ser reposicionadas com hooks do WooCommerce.

O nível de extensibilidade é bom para leitura de regras, customização da renderização e integração com analytics do pedido. Já a parte de parcelamento deve ser entendida como exibição de mensagem, não como motor de cobrança.

Os principais cuidados são: carregar sua integração no momento certo, distinguir produto simples de variação, não confundir mensagem visual com regra real do gateway e evitar dependência de partes internas não documentadas.

Como instalar

Veja nosso guia de como instalar nosso plugin:

Compre nosso plugin

Gostou do que viu? Compre o nosso plugin:

0
    0
    Comprando...
    Nenhum plugin sendo comprado no momento.