Ao criarmos plugins ou temas no WordPress, muitas vezes queremos executar ações após determinado comportamento, como por exemplo, depois de ser salvo um post ou criar usuário.
Para isso o WordPress disponibiliza as actions (ganchos). A ideia é exatamente essa, a possibilidade de você executar alguma ação após algum procedimento, com isso expandindo formas de incrementar.
Além consumir as actions (ganchos) do WordPress ou plugins como WooCommerce, você também pode criá-las em seus plugins ou temas, para que o usuário que venha a consumir o recurso tenha essa opção.
Basicamente para definir uma action, você utilizará a função do_action, onde você definirá o nome da ação a ser executada e os parâmetros que ficarão disponíveis para essa função que irá consumir.
[php]
do_action(NOME_DO_GANCHO, PARAMETROS…);
[/php]
Imaginemos que você criou um tema e nesse tema você criou um contador de visualização de posts. Colocarei um código para ilustrar essa situação:
[php]
//ID do Post
$post_id = 5;
//Resgata do campo personalizado quantidade de visualização
$counter = (int)get_post_meta($post_id, ‘counter’, true);
//Adicionar ao valor resgatado o mais 1
$total = $counter+1;
//Atualiza o campo personalizado com novo valor
update_post_meta($post_id, ‘counter’, $total);
[/php]
Você agora quer disponibilizar esse tema e fazer com que as pessoas possam executar ações e não precisem mexer no que você já criou.
Então vamos disponibilizar uma action logo após realizar a contagem, e vamos passar o ID do Post e a contagem atual.
[php]do_action(‘counter_after’, $post_id, $total);[/php]
Veja que no primeiro parâmetro passamos nome da action. É com esse nome que o usuário pode executar a sua ação. E passamos também a variável $post_id e também a variável $total.
E só com esse código já possibilitamos os usuários que usarão o tema a executem ações sem precisar alterar o seu código.
E como usaria essa action?
Vamos dizer que um usuário quer acrescentar o total da visualização de um post quando tem alguém logado no WordPress.
Primeiro, no functions.php, criaríamos esta função:
[php]
//Define a função
function custom_counter_customer($post_id, $total){
//Verifica se visitante está logado
if(is_user_logged_in()){
//recuperar do campo personalizado
$current = (int)get_post_meta($post_id, ‘counter_customer’, true);
//Atualize com novo valor
update_post_meta($post_id, ‘counter_customer’, $current+1);
}
}
[/php]
Não basta só criar a função, precisamos falar para o WordPress que queremos que ele execute essa função numa parte especifica. Para isso usaremos a função add_action. Nela precisamos informar qual o gancho que queremos que seja disparado, o nome da nossa função, a ordem que será executada a função e quantidade de parâmetros que terão nela.
[php]add_action(‘counter_after’, ‘custom_counter_customer’, 10, 2);[/php]
No primeiro parâmetro dizemos qual será o gancho, no caso counter_after que foi criado. Depois, o nome da nossa função, que é custom_counter_customer. O terceiro é a ordem que será executada, que por padrão é 10. Você colocará um valor maior se quiser que seja executada depois ou antes, porque pode ter outras funções usando essa action. O quarto é a quantidade de parâmetros que terá nossa função, no caso dois.
Pronto, dessa forma vimos como criar actions e como utilizá-las.
Espero ter ajudado.