Pontos de Extensão
Todos os hooks públicos do WordPress fornecidos pelo plugin middag-account. Plugins de terceiros e satélites podem usá-los para estender o comportamento sem modificar o código principal.
Todo hook usa o prefixo middag. Eventos de domínio seguem o padrão middag/{domain}/{event}.
Actions de Ciclo de Vida
| Hook | Parâmetros | Descrição |
|---|---|---|
middag_activated | nenhum | Disparado após ativação do plugin, CPTs registrados |
middag_deactivated | nenhum | Disparado após desativação do plugin, cron limpo |
add_action('middag_activated', function (): void {
// Setup de plugin satélite que depende do middag-account
});Actions de Eventos de Domínio
Eventos de domínio são despachados via do_action("middag/{domain}/{event}", ...$payload).
Eventos de Entitlement
| Hook | Parâmetros |
|---|---|
middag/entitlement/created | EntitlementEntity $entitlement |
middag/entitlement/provisioned | EntitlementEntity $entitlement |
middag/entitlement/status_changed | EntitlementEntity $entitlement, string $old, string $new |
middag/entitlement/suspended | EntitlementEntity $entitlement, string $reason |
middag/entitlement/reactivated | EntitlementEntity $entitlement |
middag/entitlement/cancelled | EntitlementEntity $entitlement, string $reason |
add_action('middag/entitlement/provisioned', function (EntitlementEntity $ent): void {
if ($ent->class === 'PLG') {
// Ativar licença automaticamente para entitlements de plugin
}
}, 10, 1);Eventos de Quote
| Hook | Parâmetros |
|---|---|
middag/quote/created | QuoteEntity $quote |
middag/quote/accepted | QuoteEntity $quote |
middag/quote/rejected | QuoteEntity $quote |
middag/quote/paid | QuoteEntity $quote |
middag/quote/status_changed | QuoteEntity $quote, string $old, string $new |
O evento middag/quote/paid aciona o pipeline de provisionamento automático. QuoteEntitlementHooks escuta na prioridade 10 para criar entitlements a partir de quotes pagos.
Eventos de Environment
| Hook | Parâmetros |
|---|---|
middag/environment/created | EnvironmentEntity $environment |
middag/environment/status_changed | EnvironmentEntity $environment, string $old, string $new |
Eventos de Service
| Hook | Parâmetros |
|---|---|
middag/service/created | ServiceEntity $service |
middag/service/status_changed | ServiceEntity $service, string $old, string $new |
Eventos de Ticket
| Hook | Parâmetros |
|---|---|
middag/ticket/created | TicketEntity $sr |
middag/ticket/status_changed | TicketEntity $sr, string $old, string $new |
Eventos de E-mail
Despachados pelo WordPressEventDispatcher e consumidos pelo EmailEventListener:
| Nome do Evento | Template de E-mail |
|---|---|
auth.register_email_only | AuthRegisterEmailOnly |
auth.reset_password | AuthResetPassword |
auth.verify_account | AuthVerifyAccount |
auth.welcome | AuthWelcome |
collaborator.invite_sent | CollaboratorInvite |
collaborator.invite_accepted | CollaboratorAcceptedInvite |
collaborator.invite_rejected | CollaboratorRejectedInvite |
collaborator.permissions_updated | CollaboratorPermissionsUpdated |
collaborator.removed | CollaboratorRemoved |
O nome do hook WordPress é middag/{eventName} (ex.: middag/auth.welcome).
Hooks de Filtro
middag_password_requirements
Sobrescreve as regras de válidação de senha (padrão segue NIST SP 800-63B):
add_filter('middag_password_requirements', function (array $req): array {
$req['min_length'] = 12;
return $req;
});Padrão: ['min_length' => 8, 'require_uppercase' => true, 'require_lowercase' => true, 'require_number' => true]
middag_rate_limit_whitelist
IPs isentos do rate limiting da API. Padrão: ['127.0.0.1', '::1'].
add_filter('middag_rate_limit_whitelist', function (array $list): array {
$list[] = '10.0.0.1';
return $list;
});middag_email_event_map
Adiciona ou sobrescreve mapeamentos de evento para template de e-mail:
add_filter('middag_email_event_map', function (array $map): array {
$map['order.completed'] = function (array $payload): void {
(new MyOrderEmail())->trigger($payload['email'], $payload['order_id']);
};
return $map;
});middag_email_print_button_color
Sobrescreve a cor do botão CTA nos templates de e-mail de serviço. Padrão: cor base do WooCommerce.
middag_email_button_url
Sobrescreve a URL do botão CTA no e-mail de "novo site". Recebe (string $url, array $cct).
Hooks de Cron
Registrados pelo CronRegistrar, limpos na desativação:
| Nome do Hook | Intervalo | Descrição |
|---|---|---|
middag_every_minute | 60s | Tarefas de background de alta frequência |
middag_five_minutes | 5 min | Alinhado ao relógio (ex.: :00, :05) |
middag_fifteen_minutes | 15 min | Sincronização de frequência média |
middag_thirty_minutes | 30 min | Polling de integrações |
middag_hourly | 1 hora | Tarefas horárias alinhadas ao relógio |
middag_twicedaily | 12 horas | Manutenção duas vezes ao dia |
middag_daily_morning | 24 horas | Diário às 06:00 horário do servidor |
Contrato de Estabilidade
Hooks existentes nunca são removidos. Novos parâmetros são sempre adicionados ao final. Esta garantia se aplica dentro do ciclo de vida v1.