Olá @Sruly :
Você praticamente respondeu à sua própria pergunta, mas vou elaborar um pouco.
Ganchos de ação
Os ganchos de ações destinam-se ao uso quando o núcleo do WordPress ou algum plug-in ou tema oferece a oportunidade de inserir seu código em um determinado momento e executar um ou mais dos seguintes procedimentos:
- Use
echo
para injetar algum HTML ou outro conteúdo no buffer de resposta,
- Modifique o estado da variável global para uma ou mais variáveis e / ou
- Modifique os parâmetros passados para sua função de gancho (assumindo que o gancho foi chamado por em
do_action_ref_array()
vez de, do_action()
pois o último não suporta a passagem de variáveis por referência ).
Ganchos de filtro
Os ganchos de filtro se comportam de maneira muito semelhante aos ganchos de ação, mas seu uso pretendido é receber um valor e, potencialmente, retornar uma versão modificada do valor. Um gancho de filtro também pode ser usado como um gancho de ação, ou seja, para modificar uma variável global ou gerar algum HTML, assumindo que é isso que você precisa fazer quando o gancho é chamado. Uma coisa que é muito importante sobre os ganchos de filtro com os quais você não precisa se preocupar com os ganchos de ação é que a pessoa que usa um gancho de filtro deve retornar (uma versão modificada) o primeiro parâmetro que foi passado. Um erro comum para iniciantes é esquecer de retornar esse valor!
Usando parâmetros adicionais para fornecer contexto em ganchos de filtro
Como um aparte , senti que os ganchos de filtro eram prejudicados nas versões anteriores do WordPress porque eles receberiam apenas um parâmetro; ou seja, eles receberiam um valor para modificar, mas nenhum segundo ou terceiro parâmetros para fornecer qualquer contexto. Ultimamente e positivamente, no entanto, parece que a equipe principal do WordPress tem alegremente (para mim) adicionado parâmetros extras aos Filter Hooks, para que você possa descobrir mais contexto. Um bom exemplo é o posts_where
gancho; Acredito que algumas versões anteriores aceitavam apenas um parâmetro, sendo a classe "where" da consulta atual, mas agora aceitam a cláusula where e uma referência à instância atual da WP_Query
classe que está chamando o gancho.
Então, qual é a diferença real?
Na realidade, os Hooks de filtro são praticamente um superconjunto de Hooks de ação. O primeiro pode fazer qualquer coisa que o segundo possa fazer e um pouco mais, embora o desenvolvedor não tenha a responsabilidade de retornar um valor com o Gancho de Ação que ele ou ela faz com o Gancho de Filtro.
Orientação e intenção de telegrafar
Mas provavelmente não é isso que é importante. Eu acho que o importante é que, por um desenvolvedor que escolhe usar um gancho de ação versus um gancho de filtro ou vice-versa, ele está telegrafando suas intenções e, assim, dando orientação ao desenvolvedor de programadores ou plugins que possam estar usando o gancho. Em essência, eles estão dizendo: "Vou ligar para você, faça o que for necessário" OU "Vou passar esse valor para você modificar, mas certifique-se de devolvê-lo ".
Então, em última análise , acho que a orientação fornecida pela escolha do tipo de gancho é o valor real por trás da distinção . IMO, pelo menos.
Espero que isto ajude!
Se você procurar na fonte a
add_action()
função principal, é apenas um invólucro para aadd_filter()
função ...E se você olhar para a
do_action()
função principal, ela é muito semelhante àapply_filters()
função principal, com uma diferença muito importante: ela não retorna um valor.Então o que isso quer dizer? ações são como filtros, exceto que uma ação não retorna um valor; portanto, você não pode modificar dados. Isso mostra que era simples criar o mecanismo de ação do WordPress simplesmente copiando o mecanismo de filtro e não retornando um valor. Basicamente, tudo o que você pode fazer com uma ação é simplesmente executar uma função sem modificar algum valor.
fonte
Em palavras simples.
Atualizado: podemos estender qualquer plug-in que use as ações e os filtros sem modificar o código. Adicionando filtros e ações em nosso próprio tema ou plugin.
Como usar?
Açao:
Confira abaixo exemplos simples no seu
functions.php
arquivo de tema .O programa acima imprime a saída:
[NOTA: Aqui test () simplesmente chama a função. E execute a função de retorno de chamada 'test'.]
O programa acima imprime a saída:
[NOTA: Aqui
do_action('test')
funciona como chamar a função. E execute a função de retorno de chamada 'test1'.]O programa acima imprime a saída:
[NOTA: Aqui
do_action('test')
funciona como chamar a função. E execute funções de retorno de chamada em suas prioridades.A função de retorno de chamada 'test1' tem prioridade 2 e 'test2' tem prioridade 1.]
Se as prioridades forem alteradas como 'test1' com prioridade 1 e 'test2' com prioridade 2, a saída será:
functions.php
O programa acima imprime a saída:
Agora, crie um plug-in de amostra para verificar como funciona para o desenvolvedor de terceiros.
/wp-content/plugins/
diretórioAgora, ative nosso plugin Simples no painel de administração do WordPress.
Vá para o plugin do menu e ative-o.
Após ativar o plugin acima do programa, imprima a saída:
[NOTA: Se adicionarmos a prioridade para a ação do plug-in de 1 a 9, ela imprimirá a saída como:
Porque, o WordPress considera o
10 priority by default
para todas as ações adicionadas.]Filtros
Veja os exemplos abaixo:
Exemplo simples de PHP:
O programa acima imprime a saída:
O programa acima imprime a saída:
Aqui, Nós adicionamos filtro
my_filter_name
e mudar a saída existentearray( 'one', 'two' )
comarray( 'three', 'four' )
sem alterar o tema / plugin arquivos.fonte