FernandoAcosta.Netdocs

Adicionar variáveis customizadas

2 min de leituraAtualizado há 5 dias

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
);

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
);

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.php do 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.

Foi útil?