A meta box WhatsApp na tela de edição do pedido vem por padrão com o texto:
Oi, [nome do cliente]
Curto e neutro de propósito — você edita à mão pra cada pedido. Mas se quiser que essa caixa venha pré-preenchida com um template completo (saudação + variáveis substituídas + link de pagamento), use o filtro wc_whatsapp_pending_orders_single_message.
O filtro
apply_filters( 'wc_whatsapp_pending_orders_single_message', $default_text, $order );
| Argumento | Tipo | Descrição |
|---|---|---|
$default_text |
string |
Texto default "Oi, {first_name}" (com nome real). |
$order |
WC_Order |
O pedido sendo editado. |
Você retorna a string que deve aparecer dentro do textarea da meta box.
Exemplo: replicar a mensagem padrão da aba Mensagens
Reaproveitar a primeira mensagem cadastrada na aba Mensagens:
add_filter(
'wc_whatsapp_pending_orders_single_message',
function ( $text, $order ) {
$messages = get_option( 'wc_whatsapp_pending_orders_messages', [] );
if ( empty( $messages[0]['text'] ) ) {
return $text;
}
// substituir variáveis manualmente (a meta box não faz isso por padrão)
return wc_whatsapp_pending_orders_replace_placeholders( $messages[0]['text'], $order );
},
10,
2
);
A função wc_whatsapp_pending_orders_replace_placeholders() é hipotética nesse exemplo — a substituição de variáveis fica encapsulada dentro da classe WC_WhatsApp_Pending_Orders_List e não é exposta diretamente. Se quiser usar variáveis, replique o array de placeholders na sua função.
Exemplo: template manual com dados do pedido
Mais simples — montar o template inline sem depender da lógica do plugin:
add_filter(
'wc_whatsapp_pending_orders_single_message',
function ( $text, $order ) {
$first_name = $order->get_billing_first_name();
$items = $order->get_items();
$first_item = reset( $items );
$product = $first_item ? $first_item->get_name() : '';
$total = $order->get_formatted_order_total();
$payment = $order->needs_payment()
? $order->get_checkout_payment_url()
: $order->get_view_order_url();
return sprintf(
"Oi, %s! Tudo bem?\n\nVim te lembrar do seu pedido de *%s* (total %s).\n\nPara pagar agora, é só clicar: %s",
$first_name,
$product,
$total,
$payment
);
},
10,
2
);
Resultado dentro da meta box:
Oi, Maria! Tudo bem?
Vim te lembrar do seu pedido de *Camiseta Azul P* (total R$ 99,90).
Para pagar agora, é só clicar: https://...
Exemplo: tom diferente por status
Mensagem mais formal pra pedidos que falharam, mais leve pros pendentes simples:
add_filter(
'wc_whatsapp_pending_orders_single_message',
function ( $text, $order ) {
$first_name = $order->get_billing_first_name();
if ( 'failed' === $order->get_status() ) {
return sprintf(
"Olá, %s. Recebemos seu pedido mas tivemos uma falha no pagamento. Você consegue tentar novamente?",
$first_name
);
}
return sprintf( "Oi, %s! Vi que seu pedido está aguardando pagamento.", $first_name );
},
10,
2
);
Quando usar esse filtro vs aba Mensagens
| Cenário | Use |
|---|---|
| Equipe envia mensagens em lote pela lista | Aba Mensagens + variáveis. |
| Equipe entra no pedido individualmente para revisar antes de cobrar | Meta box + filtro single_message. |
| Loja com fluxo híbrido (cobrança em lote pela lista, atendimento humano pelo editor) | Os dois. |
A meta box é a melhor superfície quando você quer dar contexto ao operador antes do envio (ele vê os itens, o total, o status, e tem a mensagem pré-pronta com tom adequado).
Limitação atual
A meta box não faz substituição automática de variáveis {first_name}, {payment_url} no texto que você retorna pelo filtro. Se quiser variáveis, faça a substituição manualmente como nos exemplos acima.