Tópico 6 — Hooks, Actions e Filters

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

HookTipoUso
after_setup_themeActionInicialização do tema.
wp_enqueue_scriptsActionRegistrar e enfileirar CSS/JS do front.
initActionRegistrar post types e taxonomias.
the_contentFilterModificar o conteúdo de posts antes da exibição.
the_excerptFilterAlterar resumo de posts.
body_classFilterAdicionar 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

Resultado Um código previsível, modular e seguro, mantendo a integridade do core.