Cada lembrete é persistido como um post do tipo boleto_reminder. Esse post guarda toda a auditoria — agendamento, envios, cliques, cancelamentos. Conhecer a estrutura ajuda a montar relatórios e debugging.
Post type boleto_reminder
Registrado em includes/class-cpt.php:
register_post_type( 'boleto_reminder', array(
'label' => 'Boleto Reminder',
'public' => true,
'hierarchical' => false,
'supports' => false,
'capability_type' => 'post',
'capabilities' => array(
'create_posts' => false,
'delete_posts' => false,
),
'rewrite' => false,
'show_in_menu' => 'woocommerce',
) );
Características:
- Sem suporte a campos padrão (sem título visível, sem editor) — só metadados.
- Não pode ser criado nem deletado pela UI — só o próprio plugin cria, e os registros ficam preservados (auditoria).
- Aparece como submenu: WooCommerce → Boleto Reminder.
Status custom
Dois status registrados pelo plugin:
br_created — Lembrete criado
Status inicial. Representa um lembrete ativo, com pelo menos um cron pendente.
br_finished — Lembrete finalizado
Aplicado quando todos os crons rodaram ou quando o lembrete foi cancelado (mudança de status do pedido, expiração do boleto, cancelamento manual).
Meta keys do lembrete
Cada boleto_reminder tem 4 metas principais:
_order_id (int)
ID do pedido WooCommerce associado.
$order_id = get_post_meta( $reminder_id, '_order_id', true );
$order = wc_get_order( $order_id );
_clicks (array)
Lista de cliques registrados nos links de pagamento. Cada entrada:
array(
'time' => '2025-02-22 10:45:30', // GMT
'reference' => '24', // intervalo clicado (em horas)
)
Quando usar: contagem de cliques, análise por intervalo (cliques em 24h vs. 48h), tempo entre envio e primeira clique.
_timeline (array)
Lista cronológica de eventos. Cada entrada:
array(
'time' => '2025-02-22 10:15:30', // GMT
'message' => 'Definindo crons para o pedido #123',
)
Mensagens típicas:
"Definindo crons para o pedido #<id>""Definido cron para <X> horas""Enviando e-mail de <X> horas para o pedido #<id>""Eventos cancelados. Motivo: <motivo>"
_available_hours (array)
Snapshot dos intervalos configurados no momento em que o lembrete foi criado. Garante que mudanças posteriores na configuração de Horários não confundam o histórico.
array( 24 => '24 Horas depois', 48 => '48 Horas depois' )
Metas no pedido
Além do post do lembrete, o plugin grava 2 metas no WC_Order:
| Meta key | Valor | Descrição |
|---|---|---|
_wc_boleto_reminder |
'yes' |
Marca que o lembrete já foi criado pra esse pedido (evita duplicação) |
_wc_boleto_reminder_id |
int |
ID do post boleto_reminder correspondente |
Acesso rápido a partir do pedido:
$order = wc_get_order( 123 );
$reminder_id = $order->get_meta( '_wc_boleto_reminder_id' );
$reminder = wc_boleto_reminder_get_object( $reminder_id );
Iterar todos os lembretes
$query = new WP_Query( array(
'post_type' => 'boleto_reminder',
'post_status' => array( 'br_created', 'br_finished' ),
'posts_per_page' => -1,
'date_query' => array(
array( 'after' => '1 month ago' ),
),
) );
while ( $query->have_posts() ) {
$query->the_post();
$reminder = wc_boleto_reminder_get_object( get_the_ID() );
if ( $reminder ) {
echo "Pedido #{$reminder->order_id}: ";
echo count( $reminder->clicks ) . " cliques\n";
}
}
wp_reset_postdata();
_clicks e _timeline são arrays serializados pelo WordPress. Pra dashboards externos, use wc_boleto_reminder_get_object() ou exponha via REST API custom — não tente filtrar via wp_postmeta direto.