FernandoAcosta.Netdocs

Customizar mensagem do metabox

2 min de leituraAtualizado há 5 dias

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.

Foi útil?