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.

Este artigo foi publicado em 29/07/2010 nas categorias: Wordpress

Deixar uma resposta


Performance Optimization WordPress Plugins by W3 EDGE