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.
do_action(NOME_DO_GANCHO, PARAMETROS...);
Veremos isso na prática
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:
//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);
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.
do_action('counter_after', $post_id, $total);
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:
//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); } }
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.
add_action('counter_after', 'custom_counter_customer', 10, 2);
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.
Um abraço e até a próxima.