Atualizado em: 22 de Abril de 2026
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:
Requisitos confirmados no plugin:
O fluxo confirmado no plugin é este:
Pontos públicos confirmados para integração:
Limites entre público e interno:
wootatitas_ccw_bootstrap
Tipo: Action
Quando é executado: Durante plugins_loaded, com prioridade 5, após o bootstrap mínimo do plugin.
Parâmetros: Nenhum
Retorno: Não se aplica
Exemplo de uso:
add_action(‘wootatitas_ccw_bootstrap’, function () {
if (!function_exists(‘wootatitas_ccw_obter_configuracoes’)) {
return;
}
$config = wootatitas_ccw_obter_configuracoes();
if ($config[‘plugin_ativo’] === ‘sim’) {
// Seu código de integração aqui.
}
});
wootatitas_ccw_storage_base
Tipo: Filter
Quando é executado: Quando o plugin resolve o diretório base onde os contratos serão armazenados.
Parâmetros: $base (string) — diretório base calculado pelo plugin
Retorno: string — novo diretório base
Exemplo de uso:
add_filter(‘wootatitas_ccw_storage_base’, function ($base) {
return WP_CONTENT_DIR . ‘/meus-contratos-ccw’;
});
wootatitas_ccw_parametros_disponiveis
Tipo: Filter
Quando é executado: Quando o plugin monta a lista de parâmetros disponíveis para uso no template do contrato.
Parâmetros: $parametros_disponiveis (array) — array organizado por categorias, no formato Categoria => [placeholder => descrição]
Retorno: array — lista final de parâmetros disponíveis
Exemplo de uso:
add_filter(‘wootatitas_ccw_parametros_disponiveis’, function ($parametros_disponiveis) {
$parametros_disponiveis[‘Campos Personalizados do Projeto’] = array(
‘{projeto_codigo}’ => ‘Código interno do projeto’,
‘{projeto_responsavel}’ => ‘Responsável pelo projeto’,
);
return $parametros_disponiveis;
});
wootatitas_ccw_obter_configuracoes()
Finalidade: Ler a configuração geral do plugin já com valores padrão.
Como usar: Chame a função após o plugin estar carregado.
Parâmetros: Nenhum
Retorno: array
Exemplo de uso:
if (function_exists(‘wootatitas_ccw_obter_configuracoes’)) {
$config = wootatitas_ccw_obter_configuracoes();
if ($config[‘plugin_ativo’] === ‘sim’) {
// Integração condicional.
}
}
wootatitas_ccw_deve_gerar_contrato($produto_id)
Finalidade: Verificar se um produto específico está dentro da regra atual de geração de contratos.
Como usar: Passe o ID do produto do WooCommerce.
Parâmetros: $produto_id (int) — ID do produto
Retorno: bool
Exemplo de uso:
if (function_exists(‘wootatitas_ccw_deve_gerar_contrato’)) {
$gera = wootatitas_ccw_deve_gerar_contrato(123);
if ($gera) {
// Produto elegível para contrato.
}
}
wootatitas_ccw_pedido_tem_produtos_contratuais($pedido_id)
Finalidade: Verificar se um pedido contém pelo menos um item que deve gerar contrato.
Como usar: Passe o ID do pedido.
Parâmetros: $pedido_id (int) — ID do pedido
Retorno: bool
Exemplo de uso:
if (function_exists(‘wootatitas_ccw_pedido_tem_produtos_contratuais’)) {
if (wootatitas_ccw_pedido_tem_produtos_contratuais($order_id)) {
// Seu fluxo complementar aqui.
}
}
wootatitas_ccw_obter_downloads()
Finalidade: Ler a configuração de disponibilização do contrato por download e e-mail.
Como usar: Útil para integrações que precisam respeitar a política definida no painel.
Parâmetros: Nenhum
Retorno: array
Exemplo de uso:
if (function_exists(‘wootatitas_ccw_obter_downloads’)) {
$downloads = wootatitas_ccw_obter_downloads();
if ($downloads[‘quando_disponibilizar’] === ‘download_email’) {
// Ajuste sua integração conforme a estratégia escolhida.
}
}
wootatitas_ccw_obter_template()
Finalidade: Obter o template atual do contrato.
Como usar: A função retorna o texto do template com placeholders.
Parâmetros: Nenhum
Retorno: string
Exemplo de uso:
if (function_exists(‘wootatitas_ccw_obter_template’)) {
$template = wootatitas_ccw_obter_template();
}
wootatitas_ccw_obter_parametros_disponiveis()
Finalidade: Obter a lista de placeholders disponíveis para uso no template.
Como usar: Útil para montar validações, documentação interna do projeto ou interfaces complementares.
Parâmetros: Nenhum
Retorno: array
Exemplo de uso:
if (function_exists(‘wootatitas_ccw_obter_parametros_disponiveis’)) {
$parametros = wootatitas_ccw_obter_parametros_disponiveis();
foreach ($parametros as $categoria => $itens) {
// Renderizar lista de placeholders
}
}
Observação: não foram identificadas classes públicas pensadas claramente para consumo externo. A integração confirmada é baseada em funções globais e hooks.
wootatitas_ccw_gerar_previa
Tipo: AJAX
Finalidade: Gerar a prévia do contrato no checkout com base no estado atual do formulário.
Parâmetros aceito:
Resposta esperada:
Autenticação necessária:
Exemplo de requisição:
jQuery.ajax({
url: wootatitas_ccw_frontend.ajax_url,
type: ‘POST’,
dataType: ‘json’,
data: {
action: ‘wootatitas_ccw_gerar_previa’,
nonce: wootatitas_ccw_frontend.nonce,
checkout_data: jQuery(‘form.checkout’).serialize()
}
});
Exemplo de resposta:
{
“success”: true,
“data”: {
“previa”: “CONTRATO DE PRESTAÇÃO DE SERVIÇOS\n\n…”,
“timestamp”: 1712345678
}
}
Não foram identificados endpoints REST públicos, webhooks públicos, shortcodes públicos ou blocks do Gutenberg para integração externa.
7.1. Estrutura retornada por wootatitas_ccw_obter_configuracoes()
| Chave | Tipo | Descrição |
|---|---|---|
plugin_ativo | string | Ativa ou desativa a funcionalidade principal |
gerar_para | string | Regra de elegibilidade: todos, categorias ou produtos |
categorias_selecionadas | array | IDs de categorias selecionadas |
produtos_selecionados | array | IDs de produtos selecionados |
exigir_aceite | string | Define se o aceite é obrigatório |
texto_aceite | string | Texto exibido no checkbox de aceite |
previa_contrato | string | Define posição da prévia ou se não será exibida |
7.2. Estrutura retornada por wootatitas_ccw_obter_downloads()
| Chave | Tipo | Descrição |
|---|---|---|
quando_disponibilizar | string | Estratégia de entrega do contrato |
email_assunto | string | Assunto do e-mail |
email_mensagem | string | Corpo do e-mail |
Valores confirmados para quando_disponibilizar:
| Valor | Significado |
|---|---|
download_apos_finalizar | disponibiliza download após finalizar a compra |
email_apenas | envia apenas por e-mail |
download_email | disponibiliza download e também envia por e-mail |
Grupos confirmados no código:
Exemplos confirmados:
| Placeholder | Descrição |
|---|---|
{billing_first_name} | nome do cliente |
{billing_email} | e-mail do cliente |
{pedido_numero} | número do pedido |
{pedido_total} | total do pedido |
{pedido_itens_lista} | lista detalhada dos itens |
{contratado_razao_social} | razão social do contratado |
{contratado_email} | e-mail do contratado |
{site_nome} | nome do site |
{data_atual} | data atual |
No checkout, o plugin expõe o objeto global wootatitas_ccw_frontend:
| Chave | Tipo | Descrição |
|---|---|---|
ajax_url | string | URL do admin-ajax.php |
nonce | string | nonce para a prévia |
config | object | configuração útil para o frontend |
strings | object | mensagens de interface |
| Seletor | Uso |
|---|---|
#wootatitas-ccw-preview-container | container da prévia |
#wootatitas-ccw-preview-content | conteúdo da prévia |
#wootatitas-ccw-aceite-container | container do aceite |
#wootatitas-ccw-aceite | checkbox de aceite |
| Meta key | Uso |
|---|---|
_wootatitas_ccw_aceite | indica se houve aceite |
_wootatitas_ccw_aceite_data | data/hora do aceite |
_wootatitas_ccw_aceite_ip | IP registrado no aceite |
_ccw_contrato_gerado | indica se o contrato foi gerado |
_ccw_contrato_data_geracao | data/hora da geração |
_ccw_download_disponivel | indica liberação para download |
_ccw_download_liberado_em | data/hora da liberação |
Observação: o plugin também grava outros metadados internos. Para integração, prefira ler apenas os necessários e evite depender de chaves internas não documentadas aqui.
Exemplo 1: adicionar placeholders próprios ao template
add_filter(‘wootatitas_ccw_parametros_disponiveis’, function ($parametros) {
$parametros[‘Integração do Projeto’] = array(
‘{codigo_contrato_interno}’ => ‘Código interno do ERP’,
‘{responsavel_comercial}’ => ‘Responsável comercial’,
);
return $parametros;
});
Exemplo 2: customizar o diretório base de armazenamento
add_filter(‘wootatitas_ccw_storage_base’, function ($base) {
return WP_CONTENT_DIR . ‘/documentos-contratuais’;
});
Exemplo 3: verificar elegibilidade de um produto em código do tema
add_action(‘wootatitas_ccw_bootstrap’, function () {
if (!function_exists(‘wootatitas_ccw_deve_gerar_contrato’)) {
return;
}
$produto_id = 123;
if (wootatitas_ccw_deve_gerar_contrato($produto_id)) {
// Exibir aviso, badge ou lógica complementar.
}
});
Exemplo 4: ler o aceite salvo no pedido
add_action(‘woocommerce_admin_order_data_after_order_details’, function ($order) {
$aceite = $order->get_meta(‘_wootatitas_ccw_aceite’);
$data = $order->get_meta(‘_wootatitas_ccw_aceite_data’);
if ($aceite === ‘sim’) {
echo ‘
Aceite do contrato: Sim
‘;
echo ‘
Data do aceite: ‘ . esc_html($data) . ‘
‘;
}
});
Exemplo 5: disparar a prévia manualmente em customização de checkout
jQuery(function ($) {
$(document.body).on(‘updated_checkout’, function () {
$.post(wootatitas_ccw_frontend.ajax_url, {
action: ‘wootatitas_ccw_gerar_previa’,
nonce: wootatitas_ccw_frontend.nonce,
checkout_data: $(‘form.checkout’).serialize()
});
});
});
O plugin permite integrar principalmente o fluxo de contrato no checkout, a leitura de estado do contrato no pedido, a customização dos placeholders do template e a adaptação do diretório de armazenamento.
Até o momento, não foram identificados no código:
Também existem rotas e ações administrativas usadas pelo painel do plugin, mas elas não foram tratadas aqui como interface pública para terceiros.
Recursos de licenciamento, atualização protegida, validações privadas e detalhes sensíveis de proteção não fazem parte da superfície pública de integração e não devem ser usados como base para customizações.
O plugin depende de configuração administrativa prévia para funcionar. Sem isso, a integração pode estar tecnicamente carregada, mas sem gerar contratos na prática.
Os principais cuidados são: integrar só após o bootstrap do plugin, usar os getters públicos, evitar dependência de estruturas internas e não basear customizações em partes protegidas ou administrativas.
Gostou do que viu? Compre o nosso plugin:
Comercializamos plugins na esperança de que seja útil, porém, é importante observar que ele é fornecido SEM NENHUMA GARANTIA inclusive sem a garantia implícita de ADEQUAÇÃO A UM DETERMINADO FIM.
Estamos sempre prontos para aprimorar nosso plugin e personalizá-lo de acordo com suas necessidades específicas. Não hesite em nos contatar a qualquer momento, estamos aqui para ajudá-lo.
Seus dados estão protegidos conosco.
Leia nossa Proteção de Dados.
© 2026 | Feito com ♥
39.840.429/0001-22