O Que São Hooks WordPress – Guia Para Iniciantes
WordPress Hooks (também conhecidos como ganchos) são recursos que permitem que você manipule processos sem modificar o arquivo no núcleo do WordPress. Um gancho pode ser aplicado tanto numa ação (action hook) quanto num filtro (filter hook).
Aprender sobre hooks é essencial para qualquer usuário do CMS WordPress. Eles podem ajudá-lo a criar algumas funções ou editar as configurações padrões de temas ou plugins.
O Propósito dos Hooks
O principal propósito dos ganchos é rodar uma função automaticamente. Além disso, essa técnica também tem a habilidade de modificar, estender ou limitar uma funcionalidade ou tema de um plugin.
Aqui está um exemplo de um hook no WordPress:
function mytheme_enqueue_script() {wp_enqueue_script( 'my-custom-js', 'custom.js', false );} add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_script' );
O exemplo acima mostra um gancho criado para conectar a função mytheme_enqueue_script com a ação wp_enqueue_scripts. Esse hook ativa uma nova ação para o seu site e, portanto, é chamado de action hook.
Ganchos frequentemente são usados na criação de componentes de plugin de uma aplicação. Eles não apenas são usados nos sistemas de gerenciamento de conteúdo (da sigla em inglês CMS, ou content management systems) como o WordPress, mas também são comumente usados em sites de e-commerce e de intranet dentro de uma empresa.
Como Usar Hooks WordPress?
Usar hooks no WordPress requer um pouco mais de conhecimento sobre HTML e PHP. Mesmo assim, ainda que você seja um completo iniciante, criar ganchos de ação e de filtro pode não ser tão difícil quanto você pensa.
Você somente precisa ir para a sua página de postagem e então mudar para o editor de texto. Quando estiver lá, você pode colar os hooks que copiou que outros sites ou aqueles de sua criação.
Como Utilizar o Comando add_action no WordPress
Para adicionar um hook de ação, você deve ativar a função add_action () no plugin WordPress. Essa função pode ser ativada ao escrever os padrões abaixo no seu arquivo functions.php:
add_action(the 'nome da função do target_hook', 'O_nome_da_função_que_você_quer_usar' ,'priority_scale'
Conforme nós vemos acima, hooks usam uma escala de prioridade para funcionar adequadamente. Essa escala é um valor ordinal automático baseado numa escala de 1 a 999. Isso define a ordem de preferência para funções associadas com um gancho em particular.
Um valor de prioridade mais baixo significa que a função será rodada antes, enquanto um valor maior representa uma que vai ser executada depois. A escala vai mostrar a sequência de execução das funções instaladas quando se usam os mesmos target_hooks.
O valor padrão da priority_scale é de 10. Você pode ajustar a escala de acordo com seu número de target_hooks.
Aqui está um exemplo de um gancho de ação:
<?php add_action( 'wp_print_footer_scripts', 'hostinger_custom_footer_scripts' ); function webhost_custom_footer_scripts(){ ?><script>//preencha os scripts de rodapé aqui</script> <?php } ?>
Note o padrão no exemplo acima:
- <?php é o lugar onde você põe o hook para funcionar
- add_action é o comando para criar um gancho de ação
- Wp_print_footer_scripts é o target_hook que você irá ligar a uma nova função
- Hostinger_custom_footer_scripts é a função instalada e linkada com o target_hook
- <script> representa o texto que você quer mostrar no target_hook (nesse caso, é o wp_print_footer_scripts)
Como Usar o Comando add_filter
Você pode criar um hook de filtro usando a função apply_filters (). O gancho de filtro é usado para modificar, filtrar ou substituir um valor por um novo.
Da mesma maneira que na hora de usar o hook de ação, ele traz uma função que filtra o valor com as funções de filtro associadas (apply_filter).
Mais do que isso, ele tem função de adicionar um hook filter para ser associado com outras funções (add_filter).
Aqui está um exemplo de gancho de filtro:
$score = 100; echo "Current score is : ". apply_filters( 'change_score', $score );
- $score = 100 é o valor inicial
- echo “Current score is: ” representa o script que você está mostrando
- apply_filters é o comando usado para criar um filtro de gancho
- ‘Change_score’, $score é a função a ser filtrada
Esse aqui é o filtro:
add_filter( 'change_score', 'function_change_score' ); function function_change_score( $score ){ ? $score+=100; ? return $score;}
- Add_filter é criado para conectar o hook filter com uma nova função
- ‘Change_score‘ é o gancho alvo que será modificado
- ‘Function_change_score‘ é uma nova função que vai afetar o valor inicial
- ? $score+=100; é o código que vai adicionar um valor maior para o valor atual ($score)
- ? return $score; é o código que vai mostrar um novo valor no final
O resultado deve ser algo assim:
Current score: 200
Entenda os Comandos remove_action e remove_filter
Se você quiser desabilitar os comandos add_action() ou add_filter de seu código do WordPress, você pode usar os comandos remove_action e remove_filter ().
Esses códigos basicamente são uma maneira de excluir certas ações ou funções de filtro. Isso permite que você modifique um plugin que tenha muitos ganchos desnecessários ou que pode afetar negativamente a otimização de seu site.
Neste momento, você pode estar se perguntando: “por que não apenas deletar códigos desnecessários?”
Bom, essa certamente é uma opção viável se você usa os seus próprios códigos.
Contudo, no WordPress, você frequentemente trabalha com os plugins ou temas de outra pessoa. Isso significa que você está arriscando criar um erro fatal se acabar deletando os arquivos incorretos.
Aqui está um exemplo do uso do remove_action() no WordPress:
remove_action( 'wp_print_footer_scripts', 'hostinger_custom_footer_scripts', 11 ); add_action( 'wp_print_footer_scripts', 'hostinger_custom_footer_scripts_theme', 11 ); function hostinger_custom_footer_scripts_theme() { ?> <script>//exemplo de saída por tema</script> <?php }
O exemplo acima mostra que o remove_action é usado para deletar os scripts de rodapé padrão do WordPress e substituí-lo com o script de rodapé customizado do tema da Hostinger.
Esse comando é aplicável para todos os tipos de action hooks no WordPress.
Além disso, aqui está um exemplo do remove_filter:
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' ); }
Esse exemplo mostra como desativar o wp_staticize_emoji_for_email, que converte emojis em imagens estáticas.
Então nós o substituímos com o disable_emojis_tinymce, que irá desativar o recurso de emoji no WordPress (emoji são conhecidos por reduzir as velocidades de sites por fazê-los criar um pedido adicional HTTP).
Ademais, você pode usar o comando remove_filter para desabilitar múltiplos filtros numa sequência. Aqui está um exemplo:
function disable_emojis() { remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); remove_action( 'wp_print_styles', 'print_emoji_styles' ); remove_action( 'admin_print_styles', 'print_emoji_styles' ); remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' ); add_action( 'init', 'disable_emojis' );}
O código acima busca eliminar a função emoji completamente no WordPress. Isso ilustra que não existe um limite para quantos comandos remove_filter você pode incorporar no functions.php.
Exemplos Práticos
Como mencionamos anteriormente, existem vários hooks que você pode usar para criar funções customizadas do WordPress. Aqui estão alguns deles:
admin_post_thumbnail_size
Esse gancho de filtro mostra uma imagem de thumbnail no seu post dentro de “Imagem Destacada”. Existem três parâmetros que são conectados com as funções: $size, $thumbnail_id, e $post.
O hook deve parecer com algo assim:
$size = apply_filters( 'admin_post_thumbnail_size', $size, $thumbnail_id, $post );
Tenha em mente que o parâmetro $size pode ser alterado de acordo com as suas necessidades. Por exemplo, se você quiser configurar o seu tamanho de miniatura para 240 x 240 pixels, você pode escrever o seguinte código:
$size = apply_filters( 'admin_post_thumbnail_size', 240, $thumbnail_id, $post);
Você pode definir um tamanho customizado para a sua thumbnail ao adicionar a função matriz (). O código ficará assim:
$size = apply_filters( 'admin_post_thumbnail_size', array(240, 400), $thumbnail_id, $post);
A função array () acima configura a sua miniatura para ser exibida em 240 x 400 pixels. Você deve encontrar o melhor tamanho que se ajusta perfeitamente à sua página.
after_password_reset
Esse action hook é ativado quando um usuário reseta a sua senha. O gancho consiste de dois parâmetros: $user e $new_pass.
O hook deve parecer algo assim:
do_action( 'after_password_reset', $user, $new_pass );
customize_loaded_components
Esse gancho age como um filtro que exclui alguns componentes do WordPress de seu processo central. Essas são funções que funcionam nos arquivos do core, como wp-activate.php, wp-config-sample.php ou wp-settings.php. Enquanto isso, o componente é uma coleção de recursos no WordPress que representam uma função em particular no widget.
Entretanto, é importante notar que customize_loaded_components não podem ser adicionados num tema, já que ele só é ativado durante a fase “plugins loaded”.
O hook consiste de dois parâmetros: $components e $this. Ele deve ser escrito nesse formato:
$components = apply_filters( 'customize_loaded_components', array( 'widgets', 'nav_menus' ), $this );
O parâmetro $components é um grupo de funções do core que serão carregadas, enquanto o $this se refere ao objeto na classe existente.
Você pode customizar a função array () para determinar que componentes serão excluídos. O exemplo acima mostra que as widgets e os nav_menus são os componentes que ficaram de fora do processo do núcleo.
Conclusão
Em suma, hooks são recursos que mudam a configuração padrão do seu site WordPress. Isso permite que você adicione funções customizadas ou desabilite processos sem mudar o arquivo core.
Ganchos podem ser divididos em duas categorias: ação e filtro. Apesar dos métodos de usar esses dois serem quase os mesmos, ambos possuem funções completamente diferentes.
O action hook é usado para criar novas funções, enquanto o filter hook serve para modificar o código já existente no arquivo function.php.
Além disso, existem diversos hooks que você pode incorporar no WordPress. Tente experimentar usar vários tipos de ganchos para manipular as funções que você deseja.
Quando você se tornar proficiente, você pode até mesmo criar seus próprios plugins com esse recurso. E o mais legal: ele é compatível com todos os planos WordPress da Hostinger. Boa sorte!
Comentários
August 20 2019
Gostei do conteúdo, porem tenho uma dúvida, gostaria de chamar uma função somente no momento em que o meu plugin é ativado, porém se uso o add_action("admin_init" , "whorus_prompt"); essa função é acionada em qualquer link dentro do painel administrativo do Wordpress, e essa não é a idéia. Como eu poderia rodar essa função no momento da ativação do plugin e depois ela fosse removida.
September 14 2021
Realmente é um ótimo material sobre Hooks, estou apanhando nisto não estou conseguindo resolver. Num campo HTML(numa pagina/post WP) tento enviar um código de usuário via POST e tento recuperar via método PHP que criei dentro do admin-post.php e este mjétodo uma vez localizado o usuário irá receber o link para que seja redirecionado. Esclareço que, pretendo recuperar na tabela o link de um artigo já definido por alguém(operador) que deverá ser usado para redirecionar o usuário para uma pagina. Minha fontes de apoio foram essas: https://adaptiveweb.com.au/handle-post-and-get-requests-in-wordpress-using-admin-post-php/ https://developer.wordpress.org/reference/hooks/admin_post_action/#comment-1412 Desde já agradeço ! * Adicionei este código HTML em uma página/post do WordPress * Digite seu código pessol : * Adicionei este código/método em admin-post.php * add_action( 'admin_post_nopriv_process_form', 'process_form_data' ); add_action( 'admin_post_process_form', 'process_form_data' ); function process_form_data() { global $wpdb; $cod = $_POST['nCodigo']; $results = $wpdb->get_results( "SELECT xURL FROM tbPessoa WHERE codigo = " . $cod, ARRAY_A ); foreach ( $results as $key => $value ) { // $array[] = ''; $arrRetorno = array( $value['xURL'] ); wp_safe_redirect( $arrRetorno[0]); exit; //return $arrRetorno[0]; }