¿Cómo redefinir la lista de categorías de un post en WordPress?

¿Cómo redefinir la lista de categorías de un post en WordPress?

Pese a lo que mucha gente cree, WordPress es una herramienta increíblemente potente, ágil y muy extensible, que te permite crear todo tipo de webs, desde un sencillo blog a una completa tienda de comercio electrónico. Pasando por foros, portales de formación online o incluso webs de anuncios clasificados.

Las funcionalidades que ofrece son muy completas y permiten hacer prácticamente cualquier cosa que un usuario medio pueda necesitar. Además, para temas avanzados, la definición de filtros y acciones permite redefinir prácticamente todo.

A la hora de obtener las categorías de un artículo, es posible que necesitemos modificar el HTML que genera la función the_category() para aplicar estilos especiales a una categoría concreta, añadir textos a ciertos elementos de la lista o encapsular con tags HTML cada elemento.


Sin hacer ningún tipo de modificación, la lista de categorías que obtendríamos con la función the_category(“, “) para esta entrada tendría este formato:

1
2
3
<a href="http://cleventy.com/categoria/global/aspectos-tecnicos" title="Ver todas las entradas en Aspectos técnicos" rel="category tag">Aspectos técnicos</a>, 
<a href="http://cleventy.com/categoria/global" title="Ver todas las entradas en Global" rel="category tag">Global</a>, 
<a href="http://cleventy.com/categoria/tutoriales" title="Ver todas las entradas en Tutoriales" rel="category tag">Tutoriales</a>

Si lo que buscamos es, por ejemplo, encapsular todas las categorías dentro de tags div de este modo:

1
2
3
<div><a href="http://cleventy.com/categoria/global/aspectos-tecnicos" title="Ver todas las entradas en Aspectos técnicos" rel="category tag">Aspectos técnicos</a></div>, 
<div><a href="http://cleventy.com/categoria/global" title="Ver todas las entradas en Global" rel="category tag">Global</a></div>, 
<div><a href="http://cleventy.com/categoria/tutoriales" title="Ver todas las entradas en Tutoriales" rel="category tag">Tutoriales</a></div>

Simplemente tendremos que aplicar un filtro sobre the_category() en nuestro fichero functions.php de la siguiente manera:

1
2
3
4
5
6
7
<?php 
function custom_the_category( $html ) {
        //Aplicar aquí mis modificaciones sobre $html
  	return $html;
}
add_filter( 'the_category', 'custom_the_category', 99, 1 );
?>

Hay que tener en cuenta que $html es un texto que contiene el código HTML que se representará en el navegador, por lo que para hacer modificaciones deberemos echar mano de funciones php como explode, str_replace o preg_replace.

Por ejemplo, una forma sencilla de encapsular todas las categorías como decimos en el ejemplo, podría ser esta:

1
2
3
4
5
6
7
8
<?php 
function custom_the_category( $return ) {
  	$return = str_replace('<a href', '<div><a href', $return);
	$return = str_replace('</a>', '</a></div>', $return);
  	return $return;
}
add_filter( 'the_category', 'custom_the_category', 99, 1 );
?>

De este modo, estaríamos creando un filtro customizando la función the_category a medida de nuestras necesidades.

Existen numerosos filtros que se pueden definir para modificar funciones relacionadas con widgets, artículos u otros elementos de WordPress, que iremos comentando poco a poco en nuestro blog.

Publicado en marzo 12, 2014

Un comentario en ¿Cómo redefinir la lista de categorías de un post en WordPress?
  1. […] Para saber más sobre este fragmento de código, te recomendamos que leas una entrada anterior donde explicábamos como definir una función a medida de la lista de categorías de un post. […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

« »