O que apply_filters (…) realmente faz no WordPress?

123

Estou tentando entender algumas das funções do WordPress, mas não consigo entender o que o apply_filters (...) realmente faz.

Alguém consegue esclarecer isso para mim com alguns exemplos?

Tim
fonte
12
Incrível: dev.themeblvd.com/tutorial/filters
Nabil Kadimi
Uma observação que apply_filters()é um nome incrivelmente enganoso para a função, pois aplica filtros e ações
vinculadas à
@NabilKadimi, ótima sugestão, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , mas quando esta função não aceitar nenhum argumento (clique no link para ver de qual função estou falando), como a variável $ output é alterada , como ele descreve em sua próxima seção de código?
Ramesh Pareek
@RameshPareek Seu link não parece funcionar conforme o esperado, use uma essência do Github.
Nabil Kadimi
Desculpe! Role para baixo até o Exemplo 1: O básico nessa página.
Ramesh Pareek

Respostas:

104

apply_filters($tag, $value)passa o argumento 'valor' para cada uma das funções 'conectadas' (usando add_filter) na 'tag' do filtro especificado. Cada função executa algum processamento no valor e retorna um valor modificado a ser passado para a próxima função na sequência.

Por exemplo, por padrão (no WordPress 2.9), o the_contentfiltro passa o valor por meio da seguinte sequência de funções:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
Richard M
fonte
Lembre-se também de repetir qualquer coisa cujo valor você não esteja usando, se parecer que apply_filters($value)está eliminando um valor ...
MrMesees
32

Resposta atrasada

Breve explicação

apply_filters()interage com a global $wp_filtersmatriz. Basicamente, ele apenas verifica o array se o filtro atual (ou gancho) tem uma ação (função / callback) anexada e então o chama.

Explicação longa

Quando você anexa um retorno de chamada / ação a um filtro ou gancho, basta adicionar o nome do retorno de chamada à matriz de filtros global. Quando, então, no código (por exemplo, um arquivo de template, core ou plugin) uma chamada para do_action()ou apply_filters()acontece, o WordPress procura no array e chama o callback. A única coisa mais especial com filtros do que com ganchos é que ele retorna o valor (para tratamento posterior) em vez de apenas disparar o retorno de chamada. Resumindo: os ganchos servem para inserir dados, enquanto os filtros servem para modificar os dados.

Kaiser
fonte
19

Aqui está o que estou recolhendo, ao considerar a resposta mais popular e recursos adicionais:

  • $ tag parece ser um sinônimo para o nome do gancho. (Isso não é particularmente intuitivo para mim.)
  • the_content é um exemplo de gancho, do tipo "filtro".
  • the_content hook consiste em vários filtros.
  • Filtros modificam dados. Basicamente, eles filtram o banco de dados, alterando os dados antes que os usuários os visualizem.
  • Um uso comum de apply_filters (), por exemplo, é aplicar the_content filters a $ content. Neste caso, retornos duplos serão convertidos em <p>tags, rostos sorridentes serão convertidos em ícones, etc.
  • "the_content" é um gancho, enquanto "the_content ()" é uma função.
Marjorie Roswell
fonte
1

Em termos mais básicos, apply_filters é usado para inicializar um gancho de filtro ... add_filter atribui uma nova função aos ganchos que já foram criados.

Steve
fonte
3
Desculpe, este é o caminho errado: apply_filters () chama os ganchos de filtro que já foram inicializados e add_filter () é a chamada que cria um gancho de filtro. Eu sei que você realmente quis dizer isso, mas você tem as funções do jeito errado!
Brian C
apply_filters ($ tag, $ value); permite que você crie um local em seu código onde você pode então permitir que o valor $ que você passou seja conectado e modificado usando add_filter ();
Styledev