Filtros nos artigos do WordPress
Vamos adicionar filtros aos artigos do WordPress. Por exemplo: eu tive um caso onde importei diversos arquivos e alguns continham tags HTML antigas como <b> e <i>. Quero troca-las por strong e em, respectivamente.
A rotina é simples, vamos ao exemplo:
function filtrarArtigo($content) { // (...) return $contentFiltrado; } add_filter('the_content', 'filtrarArtigo');
Eu utilizo o método add_filter que vai chamar o outro método filtrarArtigo. Este, por sua vez, recebe como parâmetro o conteúdo do artigo. Esse filtro vai acontecer cada vez que o artigo for exibido na página.
Agora vamos utilizar as rotinas para trocar as tags que citei acima. Vou utilizar o str_replace, mas poderíamos diminuir nosso código utilizando expressões regulares.
function filtrarArtigo($content) { $antigos = array('<br>', '<b>','</b>','<i>','</i>'); $novos = array('<br />', '<strong>','</strong>','<em>','</em>'); return str_replace( $antigos , $novos , $content ); } add_filter('the_content', 'filtrarArtigo');
Vou retornar a string gerada pelo str_replace, onde informo os valores antigos, os novos e onde eu vou fazer a troca.
O valor retornado é o que vai ser considerado então como conteúdo do artigo.
Se quisermos que a busca ignore letras maiúsculas ou minúsculas, basta utilizarmos o método str_ireplace().
Mais um exemplo: na minha página eu tenho tags <b> e <i> que não estão fechadas. Quero poupar minha dor de cabeça e apenas desabilita-las, trocando por nada, vazio.
Vamos ao exemplo:
function filtrarArtigo($content) { $antigos = array('<b>','</b>','<i>','</i>'); $novos = array('','','',''); return str_ireplace( $antigos , $novos , $content ); } add_filter('the_content', 'filtrarArtigo');
Exatamente a mesma lógica do exemplo anterior, apenas substituí os valores novos por strings vazias e nessa vez apliquei o método str_ireplace, assim eu encontro também tags <B> e <I>, por exemplo.

Deixar uma resposta