Hooks: ações e filtros no WordPress
Neste artigo vamos descobrir o que são hooks, filters e actions no WordPress. Os hooks são a base do WordPress. São ganchos vinculados em algumas partes do conteúdo do site. O WordPress todo é realizado com funcionamento dos hooks. Os hooks apresentam as partes de conteúdo do site e podem ser manipulados com funções: apply_filter, add_filter, do_action e add_action. O objetivo principal é deixar as funcionalidades mesmo após a atualização do WordPress, ou plugin, ou tema no mesmo lugar.
Qual é a diferença entre filters e actions no WordPress?
Os filtros nós usamos para alterar o valor de alguma variável que está vinculada no hook
As ações nós usamos para adicionar uma nova função dentro do conteúdo do hook.
Vamos criar o próprio hook-filter!
Nós vamos usar duas funções do WordPress apply_filters() e add_filter().
$my_var = apply_filters('my_own_filter', $my_var);
Isso foi um exemplo muito simples, mas acho que deu para entender a ideia.
Vamos ver agora um exemplo do action-hook.
A função do hook-ação é adicionar alguma nova funcionalidade na parte do código onde ele foi criado.
Da mesma forma precisamos primeiramente criar o hook, neste caso vamos usar a função do WordPress do_action()
do_action('my_own_action');
Basta colocar só o nome da ação dentro dos parênteses para cria-la.
Agora, vamos definir uma nova funcionalidade que vai ser adicionada neste hook.
function my_function_that_returns_post_1() {
return get_post(0)->post_content;
}
add_action('my_own_action', 'my_function_that_returns_post_1');
Não é fácil?
Agora vamos ver sobre as prioridades.
Como num hook podemos adicionar várias ações, é bem já definir as prioridades de execução delas.
Os filters e actions, como terceiro parâmetro recebem a prioridade de execução. Quando menor o número, mais rápido a ação será executada. A prioridade padrão é igual a 10.
Um simples exemplo:
add_action('my_action_priority', function() { echo 'WordPress'; }, 199);
add_action('my_action_priority', function() { echo 'Eu '; }, 5);
add_action('my_action_priority', function() { echo 'amo ';}, 10);
do_action('my_action_priorit');
// Vai aparecer na tela a frase 'Eu amo WordPress
Removendo os hooks
Qualquer action ou filter definido numa parte do código, pode ser removido com funções:
remove_filter() — remover um certo filter
remove_action() — remover uma certa ação do hook
remove_all_filters() — remover todos os filters do hook
remove_all_actions() — remover todas as ações do hook
Assim, por exemplo, quando precisamos mudar a página dos produtos no Woocommerce, precisamos remover todas as ações e depois começar adicionar elas uma depois da outra.
Como saber quais hooks tem na página
O que eu sempre uso é o plugin Simply Show Hooks Ele mostra todos os hooks que estão criando a página junto com prioridades deles.