WordPress 2.8 y las llamadas Taxonomías

Recientemente hemos podido disfrutar de un muy interesante post[en] de Justin Tadlock, un americano viviendo en Corea del Sur, y uno de los autores de plugins más activos de la blogoesfera wordpresiana.

Vamos hoy aquí, de forma ligera, a retomar las ideas principales de su post para aportar una introducción a la nueva capacidad de WordPress 2.8 : la creación de taxonomías.

¿ Qué es una taxonomía ?

Entenderemos de forma provisional (y hasta que algún iniciado en catalogación o biblioteconomía nos lo explique mejor) que una taxonomía es el método para agrupar palabras clave asignadas a elementos, o, en el vocabulario de WordPress, etiquetas.

De esta forma, seremos capaces no sólo de clasificar nuestros artículos, sinó nuestras etiquetas también (y servirlas por grupos más tarde).

Si utilizamos las categorías para demarcar grandes divisiones temáticas en nuestro site, y las etiquetas para pimentar de forma independiente los posts allí comprendidos (y crear senderos de navegación transversales), nos encontramos con que, sí, puedo agrupar posts, pero, y si necesito agrupar etiquetas (20 distintas alojadas en un mismo lugar, otras 20 en otro) ?

¿ Qué uso podría tener ?

Para clasificaciones complejas, uno se vería tentado directamente a usar sub-categorías.

Si escribo sobre cine, y tengo comedias por un lado, y películas de terror por el otro, podría así empezar a añadirles sub-géneros.

Terror
Vampiros / Zombies / Gusanos Gigantes

Pero mientras que ello sería factible, cuando me dedico a crear un catálogo de peso, donde debo asignar un año (1989, 1953, etc) a cada post, 3 actores principales de los que no sé su nombre de antemano, y una nacionalidad de producción, mis categorías empezarían a echar humo rápidamente.

Tendría pues que volverme hacia las etiquetas.

Pero como sabemos, las etiquetas en WordPress no tienen arborescencia, no las puedo agrupar bajo un label, se separan entre ellas elemento a elemento, se sitúan en un plano horizontal. Y yo quiero tener una página que listee algo así como :

1953
1954
1955
... etc (etiquetas de año)

Y, al lado, OTRA página que listee 200 actores - cada actor, un link a un archivo, y donde el resultado final es aún una ficha de película :

Tom Hanks
Steven Seagal
Julia Roberts

Es aquí dónde las taxonomías entran en acción.

Ejemplo ficticio : un videoclub por internet con WordPress

Supongamos que queremos etiquetar, CADA uno de nuestros posts, con una respuesta a estos campos, que serán comunes :

género :
actores :
director :
año de producción :
nacionalidad de producción :
guionistas :
productor :
precio :

Y que luego, en el Indice de nuestra web, invitamos al usuario a ir a cada una de estas taxonomías para abrir sus resultados, y acceder a una página final de archivo, de modo que el itinerario sea :

menu con items
----------resultados de taxonomía (lista)
---------------------------------- archivo temático (lista)
----------------------------------------------- post

o bién :

click en 'actores'
---------------- lista, escojo 'Chuck Norris'
-------------------------------------- lista, escojo 'Missing in Action IV'
------------------------------------------------------------------ lectura de 'Missing in Action'.

"Dame ése maldito código... chico"

Entraríamos el siguiente código en functions.php, a crear vacío con un editor de texto si no lo tuviéramos aún formando parte de nuestro tema de WordPres en uso.

<?php
add_action( 'init', 'create_my_taxonomies', 0 );

function create_my_taxonomies() {
register_taxonomy( 'genero', 'post', array( 'hierarchical' => false, 'label' => 'Género', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'actores', 'post', array( 'hierarchical' => false, 'label' => 'Actores', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'director', 'post', array( 'hierarchical' => false, 'label' => 'Director', 'query_var' => true, 'rewrite' => true ) );
}

?>

Aquí hemos usado Género, Actores, Director - por concisión, pero habría que adaptarlo a cada caso.

Este simple código va a abrirnos tres nuevas cajas en nuestro editor de artículos.

Los 'tags' en ellas escritos, serán independientemente procesados de los tags normales, que, en nuestro contexto, ya no tendrían uso alguno.

¿ Cómo listar ahora una taxonomía en mi web ?

A partir de aquí, tendríamos que añadir, si queremos crear una gran lista para cada taxonomía, lo siguiente, en un template de página llamado, por ejemplo, actores.php :

<?php wp_tag_cloud( array( 'taxonomy' => 'actores', 'number' => 200 ) ); ?>

O, para mostrar el template entero :

<?php
/*
Template Name: Actores
*/

?>

<?php get_header(); ?>

<div id="gran-lista">

<?php wp_tag_cloud( array( 'taxonomy' => 'actores', 'number' => 200 ) ); ?>

</div>

<?php get_footer(); ?>

Crearíamos entonces una página nueva, titulada Actores, y le asignaríamos este template de página, sin necesidad de llenarlo con nada porque sólo sirve para listarnos actores.

Nos haríamos luego con la URL de esta página, que encontraremos abriéndola desde la Administración y copiándola de la barra de nuestro navegador.

Pegaríamos luego esa URL como link en nuestro menú principal del site :

<a href="http://site.com/URL-DE-LA-PAGINA">Actores</a>

Artículo : listar taxonomías pertenencientes

<?php echo get_the_term_list( $post->ID, 'genero', 'Género: ', ', ', '' ); ?>
<?php echo get_the_term_list( $post->ID, 'actores', 'Actores: ', ', ', '' ); ?>
<?php echo get_the_term_list( $post->ID, 'director', 'Director: ', ', ', '' ); ?>

Ello puede ir justo depués de :

<?php the_title(); ?>

, en single.php.

¡ Y hasta aquí, lo esencial !

La ventaja de las taxonomías es que son linkables (los campos personalizados no), y podemos crear una navegación extremadamente articulada, si no le tenemos miedo al número de clicks - y nuestro site se carga relativamente rápido.

Por ahora, dejaremos reposar todo este material para que sea digesto, y, esperando que os haya gustado y abierto el apetito por más, espero, mientrastanto, vuestros comentarios.

Comentarios
  1. Por demás de excelente tu aporte! Muy agradecido!. Saludos!

    Escrito el26/10/2009
  2. Ignacio

    Saludos Andrés ! De nada, gracias a tí.

    Escrito el26/10/2009
  3. Excelente post, lo habia leido de pasada hace unos dias, pero no le di mucha bola. Ahora lo vuelvo a leer y no puedo creer que aya dejado pasar tan excelente opcion, habre un mundo de posibilidades, se que me sera de mucha ayuda :D

    Ahora quisiera saber si alguien conoce los atributos Custom post types wordpress 2.9

    Escrito el26/01/2010
  4. Saludos Alee, gracias, espero que cubramos también los Custom Post types en Febrero.

    Escrito el27/01/2010
  5. Muy buen artículo. Estoy buscando migrar a WordPress un pequeño portal que tiene un “CMS” que yo mismo desarrollé, y un problema con el que me encuentro es cómo agrupar artículos en “ediciones” (por ejemplo: verano de 2009).
    Me parece que por este camino voy a acercarme bastante. Desconocía el tema de las taxonomías en WP (que es básico, p.e., en Drupal). Muchas gracias.

    Escrito el18/03/2010
  6. Chris

    Bueno, empiezo con esto de wordpress pero orientado a mi web no blog. Me han recomendado esta lectura y tengo una duda.
    Si mi web solo tendrá dos tipos de categorias, una referidoa a tipo de trabajo (3d, ilustración etc) y herramientas utilizadas(photoshop, illustrator, 3ds max etc),¿sería necesario o mejor, usar las taxonomías para crear este tipo de clasificaciones?
    ¿o con categorias y subcategorias es sufciciente?

    Por cierto, interesante artículo y claro.Gracias

    Escrito el09/11/2010
  7. Hola Chris,

    En tu caso, tendrías sólo 2 grupos de clasificaciones: tipo de trabajo y herramientas usadas.

    De este modo, usando categorías para el primero, y simples tags para el segundo, podrías solucionarlo fácilmente, aprovechando que ambas cosas te vienen por defecto, y que todos tus tags serían de un solo “tema” (herramientas usadas).

    El mejor escenario en el que usar taxonomías es cuando a tu clasificación se le añade un tercer grupo (o más), porque ya estarías obligado a distinguir entre “tipos” de tags.

    Supón que quieres añadir a tus artículos la clasificación “dificultad”. En este caso, sí podrías sacar provecho de las taxonomías, que te permiten etiquetar un artículo con “herramientas utilizadas” por un lado, y por otro “dificultad de realización”, siendo capaz luego de mostrar ambos grupos por separado, sea en la vista final del artículo, sea en listas diferenciadas (en un menú o página estática).

    Usando Categorías y subcategorías, podrías conseguir lo mismo, pero con ciertas desventajas:

    – Tipos de trabajo
    — 3D
    — Diseño Gráfico
    — Edición Vídeo
    — …

    – Herramientas
    — Photoshop
    — After Effects
    — Illustrator
    — …

    – Dificultad
    — Fácil
    — Moderado
    — Difícil
    — …

    “Tipos de trabajo”, “Herramientas” y “Dificultad” darían a una página de archivo dónde se mezclarían todos los artículos de sus subcategorías sin división alguna, lo cuál no sirve a ningún propósito.

    Además, en tus artículos no podrías distinguir entre grupos de clasificación y te pasaría esto:

    “Este artículo se encuentra categorizado en: Tipos de trabajo, 3D, Herramientas, Photoshop, Dificultad, Moderado.”

    Lo cuál no tiene nada que ver con esto (siendo sólo el segundo término un link):

    – Tipo de trabajo: 3D
    – Herramientas usadas: Photoshop
    – Dificultad: Moderada

    …cosa que se consigue con taxonomías, o una combinación entre categorías (el grupo con menos elementos, el más estable) y taxonomías.

    Las categorías sirven cuando sus categorías-madre tienen sentido al margen de sus sub-categorías (África {Nigeria, Mozambique, Egipto}, Asia{China, India, Pakistán}).

    Escrito el09/11/2010
  8. Chris

    Perfecto, muchas gracias por contestar.Saludos

    Escrito el09/11/2010
  9. mi problema viene que yo creo las taxonomias y la url para verlas no me funciona.

    Escrito el06/12/2012

DEJA TU COMENTARIO