WordPress Hooks Ações e Filtros

WordPress Hooks Ações e Filtros

WordPress Hooks Ações e Filtros 

WordPress Hooks Ações e Filtros, é um assunto que muita gente que está iniciando no desenvolvimento para WordPress se pergunta é a respeito dos Hooks que é um lugar onde você pode adicionar seus próprios códigos ou modificar o que o WordPress faz por padrão. O Hook um recurso muito utilizado para quem quer desenvolver seus próprios temas com funções e para quem também deseja desenvolver plug-ins para o WordPress.

Fiz muitas pesquisas sobre esse tema, pois o que encontrei na web explica, porém não de uma forma “amigável” ao entendimento de quem está iniciando no desenvolvimento e este artigo publicado por Zac Gordon da equipe da Treehouse, foi o que achei mais amigável, então resolvi publicar um post a respeito. Espero que vocês aproveitem o conteúdo.

WordPress Hooks: Ações, Filtros, e  Exemplos

Hooks no WordPress permitem aos desenvolvedores amarrarem facilmente seus próprios códigos com o código base (core code) temas e plugins. Neste artigo, nós descobriremos o que são os Hooks, e vamos passar dos diferentes tipos de hooks e ver alguns exemplos dos hooks em ação.

Definição dos termos

Um gancho é um termo genérico no WordPress que se refere a lugares onde você pode adicionar seu próprio código ou alterar o que o WordPress está fazendo ou saída por padrão. Existem dois tipos de ganchos no WordPress: Ações e Filtros.

Uma Ação no WordPress is um hook que é disparado em um determinado momento quando o WordPress está executando e te permite tomar uma ação. Isso pode incluir coisas como criar um Widget quando o WordPress está inicializando ou enviando um Tweet quando alguém publica um post.

Um Filtro no WordPress permite você obter e modificar dados antes de serem enviados para a base de dados ou browser. Alguns exemplos de filtros incluem a personalização de como trechos são exibidas ou adicionam algum código personalizado ao final de uma postagem no blog.

No início, pode ser um pouco confuso para descobrir se algo é uma ação ou um filtro. Uma importante diferença é que quando você trabalha com um filtro, você vai receber um pedaço de dados e em seguida, no final de sua função, você tem que retornar esses dados de volta.

Com uma ação, por outro lado, você não está recebendo modificação de dados, você simplesmente terá um lugar no tempo de execução de WordPress, onde você pode executar seu código.

Tipos de Hooks: Actions (Ações) e Filters (Filtros)

O Codex do Wordpres (documentação oficial da plataforma) tem duas importantes páginas que podem lhe ajudar a se orientar sobre quais Hooks estão disponíveis no WordPress.

The WordPress Action Reference page has available actions listed by the following categories:

A Pagina de referência do WordPress tem à disposição Actions listados pelas seguintes categorias:

O Codex também tem uma página similar Filter Reference page que  lista as seguintes categorias:

Muitos destes Hooks Filtros são separados em subcategorias: Leitura de banco de dados e Escritas de banco de dados. Isso depende se você está lendo do banco de dados antes de exibir em uma página ou editando uma tela, ou se você está escrevendo código antes de salvar dados no banco de dados.

Trabalhar com Hooks no WordPress começa com descobrir o Hook que você precisa para amarrar seu código e, em seguida, escrever o código para modificar os dados que você precisa ou executar qualquer ação que você precisa.

Se você ficar travado, ou você não tem certeza qual Hook usar, geralmente você pode descobrir isso buscando algo como: “. WordPress Actions para [o que você quiser ligar]” O WordPress Stackexchange (Site de perguntas e resposta do Stack Exchange de WordPress) tem uma série de resultados com perguntas como esta também.

Como adicionar e remover suas proóprias funções

Se você deseja de fazer suas próprias funções, o processo é bem simples. Primeiro você precisa saber algumas informações. Para Actions (Ações), você vai querer saber o nome do Hook, bem como quando exatamente ele é executado. Para os Filters (filtros), você também precisa saber o nome do Hook, mas você quer saber o valor que você vai obter e que tem de retornar, também. O bit final de informação que você precisa, é o nome da função onde você tem todo o seu código.

Como converter um Hook para uma Action (Ação)

add_action( $hook, $function_to_add, $priority, $accepted_args );

Os parâmetros requeridos da funçao add_action são o Hook e função a serem adicionados. A prioridade é um valor inteiro opcional baseado numa escala de 1 a 999 que determina a prioridade de ordem para funções ligadas a esse gancho específico. Maior prioridade significa que ele é executado mais tarde, prioridade mais baixa significa mais cedo. O último parâmetro é usado com menor frequência e é para quando você precisa passar ou aceitar vários argumentos.

Como converter um  Hook into para um Filter (Filtro)

add_filter( $tag, $function_to_add, $priority, $accepted_args );

O add_filter funciona da mesma forma que o add_action. Você terá que ter cuidado também , porque às vezes um hook existe tanto como uma ação e um filtro, ou um filtro e uma função. Você verá a diferença real com a função real que você chama.

Lembre que, para um filtro, a function_to_add  ambos recebem um valor e tem que retorná-lo no final da função. As ações, por outro lado, simplesmente executam o código de que precisam e não retornam um valor.

Como remover um Hook de Actions e Filters

Para remover um hook é bastante simples. Use a função remove_action ou remove_filter juntamente com o nome do hook, função e prioridade. A prioridade é opcional e útil se você tiver que desengatar uma função que está ligada mais de uma vez e você só deseja remover uma ocorrência específica dessa função.

remove_action( $tag, $function_to_remove, $priority );
remove_filter( $tag, $function_to_remove, $priority );

Agora que examinamos os conceitos básicos de como as funções são conectada (hooked) e desconectada (unhooked), vamos dar uma olhada em alguns exemplos do mundo real de alguns Hooks diferentes em ação.

Exemplos de WordPress Hooks em Ação

Existem mais de 200 ganchos no WordPress. Abaixo você encontrará alguns exemplos de ganchos comuns em uso.

Registrar um Custom Menu no Admin

function register_my_custom_menu_page() {

 add_menu_page( 'custom menu title', 'custom menu', 'manage_options', 'myplugin/myplugin-admin.php', '', 'dashicons-admin-site', 6 );

}

add_action( 'admin_menu', 'register_my_custom_menu_page' );

No exemplo acima você pode ver a função register_my_custom_menu_page sendo conectada ao Hook de ação admin_menu. Isso permite que você execute o código quando o menu de administração está sendo gerado. Isso é mais comumente usado para adicionar um link de menu personalizado para um plug-in ou tema.

Alterar o comprimento do  techo

function excerpt_length_example( $words ) {

 return 15;

}

add_filter( 'excerpt_length', 'excerpt_length_example' );

Neste exemplo, estamos usando o filtro excerpt_length, que nos fornece um número inteiro que determina o comprimento usado com the_excerpt (). Se você não tiver certeza sobre qual valor é passado para um filtro, você pode pesquisar o código core do WordPress para apply_filters (‘filter_name’ e olhar mais a fundo o que está acontecendo com esse filtro.

Hook na publicação de um Post

function publish_post_tweet($post_ID) {

  global $post;

  // Code to send a tweet with post info

}

add_action('publish_post', 'publish_post_tweet');

No pseudo exemplo acima, você pode ver que estamos conectando em uma ação chamada “publish_post”, que é executado quando um post é publicado. Você pode usar isso para fazer algo como enviar um tweet com informações sobre o post publicado.

O código real para isso é mais complexo do que temos espaço para cobrir, mas serve como um bom exemplo de uma ação que você pode executar quando uma postagem é publicada.

Hook na inicialização do  Widget

 function create_my_widget() {

 register_sidebar(array(

 'name' => __( 'My Sidebar', 'mytheme' ),

 'id' => 'my_sidebar',

 'description' => __( 'The one and only', 'mytheme' ),

 ));

}

add_action( 'widgets_init', 'create_my_widget' );

Criar um widget é uma ação muito simples e comum para adicionar a um tema ou plugin. Ao fazê-lo, tem de ligar à acção widget_init. Este gancho permite que você execute seu código quando widgets estão sendo gerados dentro do WordPress, por isso é o gancho perfeito para adicionar seus próprios widgets ao mesmo tempo.

Hook nos scripts de   Front-end e estilos

function theme_styles() {

 wp_enqueue_style( 'bootstrap_css', get_template_directory_uri() . '/css/bootstrap.min.css' );

 wp_enqueue_style( 'main_css', get_template_directory_uri() . '/style.css' );

 wp_enqueue_script( 'bootstrap_js', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '', true );

 wp_enqueue_script( 'theme_js', get_template_directory_uri() . '/js/theme.js', array('jquery', 'bootstrap_js'), '', true );

}

add_action( 'wp_enqueue_scripts', 'theme_styles' );

This is a commonly-used hook and one that you learn quite early in WordPress development. It allows you to generate a URL stylesheets and JavaScript files on the front-end of your theme. This is the preferred method of linking to CSS and JS, rather than hardcoding the links in your theme header.

Este é um hook comumente usado e que você aprende bastante cedo no desenvolvimento do WordPress. Ele permite que você gerar um URL stylesheets e arquivos JavaScript no front-end do seu tema. Este é o método preferido de ligação para CSS e JS, em vez de hardcoding os links no cabeçalho do seu tema.

Este foi um artigo de introdução a hooks do WordPress, escrito pelo Zac Gordon e transcrito por mim. Deseja mergulhar mais a fundo nos Hook do WordPress? Para os autodidatas eu recomendo consutar o Codex da plataforma em WordPress Codex ou conhecer o curso do Zac na Treehouse neste link.

Espero que tenham gostado, deixem seus comentários.

Share This:

Receba gratuitamente e-mails com dicas e tutoriais do WordPress Sem Mistério.
Você receberá e-mails informando as atualizações do blog e semanalmente dicas e novidades sobre WordPress.
Temos 100% de respeito pela sua privacidade. Não fazemos Spam.