Criando e utilizando actions no WordPress

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...);

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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *