1. O que são Hooks
Hooks são pontos estratégicos dentro do núcleo do WordPress onde desenvolvedores podem “conectar” suas funções, modificando comportamentos sem alterar o core. Existem dois tipos principais: Actions e Filters.
Objetivo entender como o WordPress dispara eventos e permite interceptar ou alterar fluxos de execução.
2. Actions (Ações)
As Actions permitem executar uma função personalizada em um momento específico do ciclo de vida do WordPress.
Exemplo — adicionando código no carregamento do tema
add_action('after_setup_theme', function() {
add_theme_support('post-thumbnails');
add_theme_support('title-tag');
});
Você também pode criar suas próprias actions e executá-las em pontos definidos por você.
Exemplo — action personalizada
// Definição da action
do_action('matilha_evento', 'iniciado');
// Gancho customizado
add_action('matilha_evento', function($status){
error_log('Evento Matilha: '.$status);
});
3. Filters (Filtros)
Os Filters interceptam valores antes que sejam exibidos ou gravados, permitindo modificações sem afetar o código original.
Exemplo — alterando o título dos posts
add_filter('the_title', function($title){
return '⭐ ' . $title;
});
Exemplo — filtro customizado
// Criando filtro
$value = apply_filters('matilha_bonus', 100);
// Aplicando filtro
add_filter('matilha_bonus', function($valor){
return $valor * 1.2; // 20% de bônus
});
4. Hooks mais comuns no desenvolvimento de temas
| Hook | Tipo | Uso |
|---|---|---|
| after_setup_theme | Action | Inicialização do tema. |
| wp_enqueue_scripts | Action | Registrar e enfileirar CSS/JS do front. |
| init | Action | Registrar post types e taxonomias. |
| the_content | Filter | Modificar o conteúdo de posts antes da exibição. |
| the_excerpt | Filter | Alterar resumo de posts. |
| body_class | Filter | Adicionar classes personalizadas ao body. |
5. Prioridade e número de parâmetros
Cada hook pode receber prioridade e quantidade de argumentos. O padrão é prioridade 10 e 1 argumento.
Exemplo com prioridade e múltiplos parâmetros
add_filter('the_content', function($content, $post_id){
if ($post_id == 10) {
$content .= '<p>Conteúdo adicional para o post 10.</p>';
}
return $content;
}, 15, 2);
6. Removendo Hooks
Para remover um hook, é necessário referenciar a função original e o mesmo nome de hook e prioridade.
Remover hook registrado
function exemplo_titulo($title){
return 'Prefixo - ' . $title;
}
add_filter('the_title', 'exemplo_titulo');
// Remove
remove_filter('the_title', 'exemplo_titulo');
7. Ordem de Execução no Ciclo do WordPress
Fluxo simplificado
init │ ├── wp_loaded │ ├── template_redirect │ │ └── wp_head │ │ ├── the_post │ │ └── wp_footer │ └── shutdown
Observação Hooks podem ser aninhados e o timing correto é essencial para evitar erros de dependência.
8. Boas Práticas
- Não use hooks para lógica de negócio persistente — mantenha-os focados em interface ou comportamento do ciclo.
- Prefira funções anônimas para hooks simples e funções nomeadas para comportamentos reutilizáveis.
- Evite sobrecarregar hooks globais como
the_contentcom operações pesadas. - Use logs durante desenvolvimento para entender a ordem de execução.
Resultado Um código previsível, modular e seguro, mantendo a integridade do core.