O que são filtros?
Os filtros são funções pelas quais o WordPress passa os dados, em certos pontos da execução, pouco antes de executar alguma ação com os dados (como adicioná-los ao banco de dados ou enviá-los para a tela do navegador). Os filtros ficam entre o banco de dados e o navegador (quando o WordPress está gerando páginas) e entre o navegador e o banco de dados (quando o WordPress está adicionando novas postagens e comentários ao banco de dados); a maioria das entradas e saídas no WordPress passa por pelo menos um filtro. O WordPress faz alguma filtragem por padrão, e seu plugin pode adicionar sua própria filtragem.
Conectando-se a um filtro
Para permitir que os usuários alterem alguns dados específicos (um valor, a saída de uma função etc.), os ganchos de filtro são fornecidos por meio de apply_filters
funções.
Esses ganchos de filtro incluem o nome (ou tag ) do filtro e pelo menos o nome da função a ser usada para filtrar (ou seja, alterar de alguma forma) os dados.
Para alterar o título de uma postagem, você pode usar o the_title
gancho de filtro, definido da seguinte maneira:
apply_filters( 'the_title', $title, $id );
Isso significa que o filtro possui a tag / nome the_title
, o primeiro parâmetro $title
são os dados a serem alterados (ou seja, o título da postagem) e o segundo parâmetro $id
é uma informação extra (nesse caso, o ID da postagem).
Para exibir o título de cada postagem em MAIÚSCULAS, por exemplo, você pode usar a seguinte linha:
add_filter('the_title', 'strtoupper');
Se dermos uma olhada na add_filter
função, vemos que ela é definida da seguinte maneira:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Especificamos apenas o primeiro e o segundo parâmetro (obrigatório), enquanto o terceiro e o quarto parâmetros são configurados para seu respectivo valor padrão (ou seja, 10
e 1
).
Um filtro mais complexo
Se você quiser filtrar apenas uma determinada postagem , poderá usar as informações extras (no caso desse filtro: o ID). Para fazer isso, você deve especificar o número de parâmetros (que é 2 neste caso) e, para fazer isso novamente, é necessário especificar o parâmetro de prioridade (que vem antes do número de argumentos).
Suponha que desejemos afetar apenas o título da postagem com o ID 42, e será assim:
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
Nesse caso, temos que especificar todos os quatro parâmetros disponíveis.
Quais parâmetros eu tenho?
Para identificar o (número de) parâmetros disponíveis de um determinado filtro, é necessário procurar onde ele está definido (neste caso: aqui ).
Referências :