As 17 variáveis nativas cobrem a maioria dos casos, mas você pode injetar variáveis próprias — {store_name}, {cpf}, {tracking_url}, qualquer chave que faça sentido pra sua loja — usando o filtro wc_whatsapp_pending_orders_placeholders.
O filtro
apply_filters( 'wc_whatsapp_pending_orders_placeholders', $placeholders, $order );
| Argumento | Tipo | Descrição |
|---|---|---|
$placeholders |
array |
Dicionário {chave} → valor. Mantém todas as variáveis nativas. |
$order |
WC_Order |
O pedido em processamento. |
Você adiciona ou sobrescreve chaves no array e retorna o array modificado.
Exemplo: nome da loja
add_filter(
'wc_whatsapp_pending_orders_placeholders',
function ( $placeholders, $order ) {
$placeholders['{store_name}'] = get_bloginfo( 'name' );
return $placeholders;
},
10,
2
);
Agora você pode usar {store_name} em qualquer mensagem na aba Mensagens:
Oi, {first_name}! Aqui é a {store_name} lembrando que seu pedido está aguardando pagamento.
Exemplo: CPF do cliente
Plugins de checkout brasileiro (como o Brazilian Market on WooCommerce) salvam CPF/CNPJ em metas. Pra trazer pra mensagem:
add_filter(
'wc_whatsapp_pending_orders_placeholders',
function ( $placeholders, $order ) {
$placeholders['{cpf}'] = $order->get_meta( '_billing_cpf' );
$placeholders['{cnpj}'] = $order->get_meta( '_billing_cnpj' );
return $placeholders;
},
10,
2
);
Exemplo: link de rastreio com URL completa
A variável {tracking_code} retorna apenas o código. Se você quer enviar a URL completa de rastreamento dos Correios:
add_filter(
'wc_whatsapp_pending_orders_placeholders',
function ( $placeholders, $order ) {
if ( ! empty( $placeholders['{tracking_code}'] ) ) {
$code = $placeholders['{tracking_code}'];
$placeholders['{tracking_url}'] = 'https://rastreamento.correios.com.br/app/index.php?objeto=' . $code;
} else {
$placeholders['{tracking_url}'] = '';
}
return $placeholders;
},
10,
2
);
Exemplo: link curto via encurtador
Se você usa Bitly, TinyURL ou outro encurtador, dá pra encurtar {payment_url} antes de enviar:
add_filter(
'wc_whatsapp_pending_orders_placeholders',
function ( $placeholders, $order ) {
if ( ! empty( $placeholders['{payment_url}'] ) ) {
$placeholders['{short_payment_url}'] = my_shortener( $placeholders['{payment_url}'] );
}
return $placeholders;
},
10,
2
);
A função my_shortener() é responsabilidade sua — chamar a API do Bitly ou similar e retornar a URL curta.
Encurtadores adicionam latência ao clique do botão. Se você cobra muitos pedidos por sessão, considere encurtar na criação do pedido (via woocommerce_thankyou) salvando em meta — e aqui só lê o meta.
Convenção do nome da chave
Use sempre chaves entre chaves com texto em inglês minúsculo, com underscore — segue o padrão das nativas:
- ✅
{store_name},{tracking_url},{my_custom_field} - ❌
{Store Name},{trackingUrl},meu_campo
Sem chaves não vai ser substituído. Com nome estranho, ainda funciona, mas fica feio na aba Mensagens pro lojista.
Onde colocar o snippet
- Plugin filho ou Code Snippets — recomendado, sobrevive a updates de tema.
functions.phpdo tema filho (não do tema principal).- Mu-plugin custom em
/wp-content/mu-plugins/.
Não coloque em arquivo do plugin WC WhatsApp Pedidos Pendentes original — vai ser sobrescrito na próxima atualização.
Variáveis aparecem na aba Mensagens?
Não. A aba Mensagens mostra a lista das variáveis nativas como referência visual, mas variáveis customizadas via filtro não aparecem na UI. Documente pra equipe num comentário ou na descrição da própria mensagem.