WordPress 3.1. acaba de salir a la calle y trae bajo el brazo una buena lista de mejoras y nuevas funcionalidades. En este artículo vamos a centrarnos en las concernientes a las taxonomías.
Podemos crear nuestras propias taxonomías desde WordPress 2.3., sin embargo, hasta la versión 2.9. no se empezó realmente a explotar el potencial de dicha herramienta.
Una taxonomía, en WordPress, es una forma personalizada de agrupar tus entradas (o también para agrupar enlaces o tipos de entradas). Para entendernos, WordPress ya trae dos taxonomías, por defecto, para las entradas: las categorías y las etiquetas. De manera que, creando taxonomías nuevas, podemos crear en nuestro sistema un nuevo tipo de relaciones entre nuestras entradas.
Pongamos un ejemplo sencillo para entender mejor sus aplicaciones:
Ejemplo de tienda online en WP
Tenemos una tienda online en WP y envíamos, diariamente, pedidos a todos los rincones del mundo (incluida la Antártida
). Para facilitarnos la tarea, hemos definido un tipo de entrada que se llama Pedido y queremos crear las dos taxonomías: País y Estado (del pedido), donde englobaremos los artículos por países de destino y por el estado en el que se encuentran desde que han sido adquiridos por el cliente. Para ello, añadimos al function.php el siguiente código:
//CUSTOM TAXONOMIES
add_action( 'init', 'build_taxonomies', 0 );
function build_taxonomies() {
register_taxonomy('pais','post',array('hierarchical' => true,'label' => 'País','query_var' => true,'rewrite' => true));
register_taxonomy('estado','post',array('hierarchical' => true,'label' => 'Estado','query_var' => true,'rewrite' => true));
}
Una vez hecho, aparecerá en el menú Entradas del panel de administración, dos nuevos submenús, llamados: País y Estado:

Hacemos click sobre una de ellas, País, por ejemplo, y como podeis comprobar, nos encontramos con la página normal de añadir categorías, sólo que esta vez, no son categorías, sino países, los que vamos a crear. Añadimos tantos como queramos y lo mismo hacemos con la taxonomía Estado. Es importante que tengamos claro dos conceptos:
Taxonomía: País
Términos (de la taxonomía): España, Francia, Inglaterra, Japón, Rusia,…
Una vez añadidos todos los términos que necesitamos a cada taxonomía, nos vamos a la página de edición de nuestras entradas de tipo Pedido. A mano derecha, han aparecido dos nuevas cajas, una por cada nueva taxonomía que hemos creado. Allí, ya podemos seleccionar el país y el estado en el que se encuentra nuestro pedido.


Y ahora, que ya sabemos usarlas. Veamos qué podemos hacer con ellas:
Consultas por taxonomías
Una de las nuevas funcionalidades de WP 3.1. es precisamente ésta. Ahora los desarrolladores podemos, crear consultas avanzadas a la base de datos con múltiples taxonomías, utilizando la función query_posts, tal y como hacíamos con las etiquetas y las categorías.
En nuestro ejemplo, podemos tener una página, con un filtro que se actualizara por AJAX (siempre queda más resultón
), donde pudiéramos mostrar una lista de los pedidos vendidos a Australia y que ya se han recibido, o todos los artículos que ya están pagados y listos para enviar, etc.
Como podeis comprobar, estas nuevas querys son muy versátiles y podemos sacarles mucho jugo, asociando nuestros diferentes tipos de entradas y agrupándolas con diferentes taxonomías.
Consultas simples por taxonomía. La siguiente consulta nos devolverá todos los pedidos hechos a Francia:
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'pais',
'field' => 'slug',
'terms' => 'francia'
)
)
);
query_posts( $args );
Consultas múltiples por taxonomía. La siguiente consulta, nos devolverá todos los pedidos hechos a Australia y Nueva Zelanda, y que además (‘relation’ => ‘AND’), que no sean ni reservas, ni estén listos para enviar (‘operator’ => ‘NOT IN’), es decir, que hayan sido entregados o enviados.
$args = array(
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'pais',
'field' => 'slug',
'terms' => array( 'australia', 'nueva-zelanda' ),
),
array(
'taxonomy' => 'estado',
'field' => 'slug',
'terms' => array( 'reservado', 'para-enviar' ),
'operator' => 'NOT IN',
)
)
)
query_posts( $args );
Para más información sobre las consultas avanzadas por taxonomías, podeis consultar la función query_posts del codex
comentarios:: 3