Quando eu estava começando a ver como funcionava o WordPress, todas a vezes que eu precisava fazer alguma coisa eu procurava na internet funções que resolvessem o meu problema e sempre me deparava com algumas delas sendo utilizadas em conjunto com
Pouco mais tarde eu vim a descobrir que estas funções são chamadas de
Vamos ver alguns pontos da nossa nossa pequena jornada sobre o que são os Ganchos do WordPress (hooks):
- Criando Ações para ganchos de ação
- Criando Filtros para ganchos de filtro
Abaixo eu irei tratar de forma um pouco mais técnica o assunto, caso você tenha alguma dúvida, deixe um comentário.
Os
Usando os ganchos os desenvolvedores tem a possibilidade de adicionar as funcionalidades sem perde-las a cada atualização do sistema.
Ações (actions)
As ações permitem disparar uma função em momentos específicos da execução do código do WordPress ou quando um evento ocorre. Por exemplo você pode querer adicionar uma função para manda um e-mail para você todas as vezes que alguém criar um artigo em seu blog.
Antes de entender como utilizar as do_action(), pois apesar de não fazer o uso direto desta função o seu plugin ou tema vai depender dela para adicionar as funcionalidades a ao sistema.
<?php do_action($tag, $arg=""); ?>
$tag— O nome daação gancho $arg— Os valores que serão passados para a função. No exemplo temos apenas um parâmetro mas na realidade existem funções com muitos parâmetros, e por este motivo é sempre bem legal verificar a quantidade de parâmetros cadaação gancho
Abaixo um exemplo de como ficaria um
<?php do_action($tag, $arg_1,$arg_2,$arg_{n}); ?>
Agora nos voltando para um exemplo real, o wp_footer é um exemplo de
O exemplo abaixo leva dois parâmetros quando for executado:
<?php do_action( 'delete_blog', $blog_id, $drop ); ?>
Neste caso o nome da delete_blog e ela aceita dois parâmetros, $blog_ID e $drop.
Pendurando funções em uma Ação gancho (action hook)
As
Por exemplo no desenvolvimento de um tema, muitas vezes existe a necessidade de executar uma função quando um tipo de add_action().
<?php add_action($tag, $function, $priority, $accepted_args ); ?>
$tag— O nome daação gancho $function— O nome da função que será disparada$priority— Usando um número inteiro, você define quando essa função deve ser disparada, caso você não coloque nenhum valor, por padrão será usado o número 10.$accepted_args— Os argumentos da sua função, por padrão apenas um argumento é passado.
Você não precisa se limitar a apenas uma função por
Vamos colocar isso em um exemplo prático de uso de
<?php
add_action('wp_footer','webord_footer_copyrights',20);
function webord_footer_copyrights() {
echo 'Esse blog funciona orgulhosamente com WordPress desde 2009';
}
?>
Filtros (filter hook)
Os headers already sent.
Claro que o WordPress é todo montado usando as funcionalidades dos Filtros e das Ações, e assim como o sistema, você pode adicionar filtros para o seu conteúdo de forma fácil tornando o seu plugin ou tema extensível. Usando a sintaxe abaixo:
<?php apply_filter($tag, $value, $arg=""); ?>
$tag— O nome daação gancho $value— Valor a ser atribuido como padrão, e que será passado para a função como primeiro argumento$arg— Os valores que serão passados para a função. No exemplo temos apenas um parâmetro mas na realidade existem funções com muitos parâmetros, e por este motivo é sempre bem legal verificar a quantidade de parâmetros cadafiltro gancho
Usando a mesma sintaxe que criamos para as ações ganchos podemos adicionar mais argumentos ao filtro:
<?php apply_filters($tag, $value,$arg_1,$arg_2,$arg_{n}); ?>Pendurando funções em um Filtro gancho (filter hook)
Usando a estrutura abaixo você pode adicionar filtros a um gancho:
<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>
$tag— O nome dofitro gancho que a função será colocada$function_to_add— O nome da função que será disparada$priority— Usando um número inteiro, você define quando essa função deve ser disparada, caso você não coloque nenhum valor, por padrão será usado o número 10.$accepted_args— Os argumentos da sua função, por padrão apenas um argumento é passado.
Como o nome já diz os
Um exemplo que acho interessante falar de uma idéia simples de plugin, para fazer a substituição de um texto específico no conteúdo de um post. Isso é usado no
<?php
add_filter( 'the_content', 'capital_P_dangit', 11 );
function capital_P_dangit( $text ) {
return str_replace( 'Wordpress', 'WordPress', $text );
}
?>
Em nenhum momento eu recomendo fazer isso, pois não é dessa forma simples que o WordPress faz, pois se fosse feito assim alguns links poderiam apontar para locais errados, mas a estrutura é bem simples.
Ainda existe muito o que ser falado sobre Ganchos, Filtros e Ações, se você se interessou o Codex do WordPress.org é seu guia, e pouco lhe faltará. Até que você se aprofunde muito no sistema lá será um ótimo local para pesquisa, e para descobrir qual Gancho você deverá usar, recomendo o banco de ganchos criado pelo Adam Brown.
Qualquer dúvida basta colocar nos comentários que eu ficarei feliz em tentar ajudar.

haruan
on 19/10/2011 at 14:22 said:Muito obrigado,
era isso mesmo que eu estava precisando.
Leandro D. Soares
on 04/04/2012 at 18:46 said:Não entendi aonde salvo esses códigos…
Eu crio um arquivo .php e com qual nome?
Eu edito algum arquivo já existente? qual?
Desculpe…. Mas todo site parte da premissa que a pessoa já sabe isso quando vai explicar o uso de hooks e eu não sei…
Se puder ajudar…
Gustavo Bordoni
on 04/04/2012 at 19:40 said:Você pode usar o código para Hooks em dois locais: em um plugin
wp-content/plugins/seu-plugin/seu-plugin.phpe ativar esse plugin na Administração do site ou nowp-content/themes/tema-ativo/functions.phpque é um arquivo que é incluido em toda requisição do WordPress, agora caso queira aplicar um hook em algo que só deve acontecer em uma página de Post pode aplicar no começo do arquivowp-content/themes/tema-ativo/single.php, ou usar uma tag condicional do WordPress para veriricar onde você está.Qualquer dúvida só colocar aqui que eu tento ajudar.
Leandro D. Soares
on 04/04/2012 at 19:48 said:Gustavo,
Obrigado pelo esclarecimento. Já deu uma luz.
É que estava lendo um artigo:
http://wp-brasil.org/wpbrasil/como-usar-o-media-uploader-do-wordpress-para-adicionar-arquivos-a-meta-boxes
(não sei de pode postar o link aqui)
Que atende exatamente o que desejo, ou seja, colocar alguns arquivos para download para meu blog. Seriam alguns pdf e ppt.
Seria abusar se eu solicitar a sua ajuda para entender o que fazer com os códigos que foi postado neste link acima?
Obrigado pela paciência.
Gustavo Bordoni
on 04/04/2012 at 20:26 said:Então minha dica cara é tu usar o plugin que eu criei para exatamente para este uso.
http://wordpress.org/extend/plugins/extend-upload/
Ele funciona bem parecido com o código que está no link que você passou mas ele é mais bem polido.
Para utilizar você só precisa instalar ele no seu tema e colocar o seguinte código no seu functions.php:
add_action( 'init', function() { global $pagenow; if( 'post-new.php' == $pagenow ) { // Aqui é colocar o código na página, e apenas naquela que é necessária, você pode printar essa variável na tela para poder verificar qual o $pagenow que você precisa wp_enqueue_script( 'extend-upload' ); wp_enqueue_style( 'extend-upload' ); } } );Ai o seu html deve ficar assim, sempre atentando para as três classes utilizadas abaixo:
Leandro D. Soares
on 04/04/2012 at 20:31 said:Cara,
Muito obrigado mesmo. Vou testar aqui.
Aproveitando ainda mais, você recomenda algum curso on-line sobre WordPress?
Ps. Depois posto aqui o resultado de sua dica.