Taxonomías avanzadas en WordPress 3.1

Esta es otra entrega del repaso que estoy haciendo en mi blog de las novedades más interesantes que nos aporta WordPress 3.1. Este último artículo ha llegado con un poco de retraso, pero bueno, aquí está, esta vez publicado en Ayuda WordPress.

Vamos a ver una novedad muy interesante que nos ofrece WordPress 3.1: la posibilidad de seleccionar a la vez múltiples taxonomías. Imaginémonos que tenemos varias taxonomías, por ejemplo (suponiendo que las entradas hacen referencia a videojuegos): Plataforma, Desarrollador, Género, Edad Recomendada, etc… Hasta ahora si queríamos obtener los resultados que pertenecieran a una taxonomía concreta no teníamos problemas. Pero si queríamos mostrar los resultados que pertenecieran a dos taxonomías a la vez (por ejemplo aquellos videojuegos cuya plataforma es Playstation 3 y su edad recomendada 18 años) no podíamos hacerlo. Hasta ahora.

Pero empecemos desde el principio. Vamos a ver primero qué es una taxonomía y dónde estábamos antes de WordPress 3.1

Qué es una Taxonomía

Sabéis que WordPress tiene Categorías y Etiquetas. Pues bien, estas son en sí mismas taxonomías, es decir, criterios para clasificar una entrada, artículo, noticia o como queráis llamarlo. Lo interesante es que además de las Categorías y de las Etiquetas WordPress te permite crear taxonomías adicionales con el fin de lograr una mejor clasificación de tus entradas.

Por ejemplo, si queremos clasificar un grupo de videojuegos podemos hacerlo de muchas maneras: según su plataforma (PC, Playstation 3, XBox 360, etc..), según la edad recomendada, el tipo de juego, el precio, etc… Es más que probable que sólo con las Categorías y las Etiquetas te quedes corto y necesites crear nuevas taxonomías.

Cómo crear una taxonomía

Vamos con un ejemplo real. Vamos a suponer que tenemos este videojuego para una web figurada que se llama “misvideojuegos.com”:

  • Título de la Entrada: Postal 2
  • Categoría: Inteligencia
  • Etiquetas: Ciencia ficción, 3D
  • Idioma: Castellano
  • Plataforma: XBox 360
  • Fabricante: Valve
  • Edad: 12 años

Lo que vamos a lograr es que se pueda adjuntar toda esta información al videojuego que vayas a crear en WordPress. Para lograrlo necesitarás crear (o “registrar” como lo llaman en WordPress) las nuevas taxonomías. Para ello abre el archivo functions.php de tu tema y escribe:

Grabamos el archivo y entramos en el administrador de WordPress. Si hacemos click en añadir una nueva Entrada, veremos que en la derecha, debajo de etiquetas, tenemos las nuevas taxonomías:

Taxonomías en WordPress

Para crear o “registrar” una taxonomía utilizamos la función de WordPress register_taxonomy(). En este enlace podéis ver la gran cantidad de parámetros que podemos usar al crear nuestras taxonomías.

En el código podemos ver que el segundo parámetro es el que indica a qué objeto aplicamos las nuevas taxonomías. En el ejemplo hemos puesto “post”, lo cual indica que se añadirán a cualquier Entrada que creemos. ¿Y si queremos que aparezcan en las Páginas pero no en las Entradas? Entonces pondríamos ‘page’. ¿Y si hemos creado unas Entradas Personalizadas que se llaman “videojuegos”? (si queréis ver cómo crear entradas personalizadas podéis verlo en el artículo Nuevo en WordPress 3.1: Archivos de Entradas Personalizadas. Entonces escribiríamos ‘videojuegos’ y las taxonomías saldrían sólo en las entradas personalizadas que se llaman ‘videojuegos’. ¿Y si queremos que salgan en varios sitios? Entonces en vez de una cadena ponemos un array:

Si hemos añadido las taxonomías a una entrada personalizada estas aparezerán en el menú de la izquierda bajo la misma:

Taxonomías en entradas personalizadas

¿Qué URLs obtenemos?
Ahora obtendremos nuevas URLs en línea con las nuevas taxonomías. Por ejemplo:

Estas URLs utilizarán el fichero archive.php de nuestro tema para mostrar todas las entradas que cumplan con la taxonomía correspondiente. Pero ¿cómo las mostramos?

Mostrar las entradas correspondientes a una etiqueta de una taxonomía concreta

Para mostrar las entradas que tengan una etiqueta concreta de una de nuestras taxonomías tenemos que poner este código antes del “loop” de nuestro tema:

Se mostrarán entonces todas las entradas que pertenezcan a la etiqueta “Playstation 3” de la Taxonomía “Plataforma”. Le hemos indicado también que muestre 15 entradas.

Nota: Cuando decimos antes del loop es antes de:

Mostrar todos los valores de una taxonomía

Si queremos mostrar todas las entradas, una a una, que correspondan a una taxonomía concreta simplemente pon este código:

Los tres últimos parámetros le dicen a WordPress qué es lo que tiene que poner antes de los enlaces de las etiquetas, entre cada enlace y después de cada enlace respectivamente.

Mostrar una nube de taxonomías en tu tema de WordPress

Para mostrar una nube de taxonomías que contenga todas las etiquetas de una taxonomía concreta, añade este código donde quieras que aparezca:

Recuerda cambiar “plataforma” por el nombre de tu taxonomía. También puedes editar el parámetro “number” que especifica cuantas etiquetas se van a mostrar. Para mostrarlas todas pon “0”.

Consultas avanzadas de Taxonomías en WordPress 3.1

Bueno, por fin estamos donde queríamos llegar: a las novedades que nos ofrece WordPress 3.1 para las Taxonomías. Las consultas avanzadas de Taxonomías usan un nuevo parámetro en las funciones de consulta que se llama “tax_query”

tax_query es un array de arrays, donde cada array describe qué criterio quieres que se cumpla a la hora de mostrar las entradas. No hay mucha documentación aún sobre tax_query, por lo que seguro que saldrán más y mejores usos de los que pongo yo aquí.

Supongamos que en nuestro blog tenemos una Categoría que se llama “Libros” y una etiqueta que se llama “Misterio” (recordad que las Categorías y las Etiquetas son Taxonomías). Si queremos mostrar todas las entradas que tengan la categoría “Libros” y la etiqueta “Misterio”, pondríamos antes del “loop”:

Como veis las entradas que se van a mostrar satisfacen los dos criterios a la vez. Se puede incluir un array de Categorías y un array de Etiquetas. Más opciones:

Si lo que queremos es que NO salgan las entradas que tengan una o varias categorías concretas (por ejemplo, que no salgan las entradas con las categorías “Libros” ni “Discos”):

Igualmente, esto hay que ponerlo antes del loop, para que en el loop sólo salgan las entradas que hemos seleccionado previamente. Como veis, a diferencia del anterior ahora hay un nuevo parámetro llamado “operator” que tiene como valor “NOT IN”.

Por último, podemos seleccionar que salgan las entradas que son de una Categoría (por ejemplo “Libros”) o de una etiqueta concreta (por ejemplo “Heavy”). Como veréis a continuación, la diferencia radica en el parámetro “relation”.

Os habréis fijado que en estos ejemplos hay un campo que se llama “field” para el que hemos dado el valor “slug”. Si en vez del “slug” queremos dar el ID de la Categoría o Etiqueta, tendriamos que poner “term_id”. También se puede poner su nombre con “name” en vez de “slug”. Por defecto es “term_id”.

Eso en cuanto a Categorías y Etiquetas, pero ¿y si quiero hacerlo con las taxonomías que he creado? Pues por ejemplo, si quiero que salgan sólo aquellos videojuegos que estén recomendados para una edad superior a los 18 años, pondría antes del loop:

Saldrían aquellos artículos en los que en el cuadro de la nueva taxonomía “Edad” haya incluido el número 18. Podría hacer igualmente combinaciones y exclusiones tal y como hicimos con las Categorías y las Etiquetas.

Pero siguiendo con el ejemplo que teníamos más arriba, en el que teníamos una entrada personalizada llamada “Videojuegos” con varias taxonomías, si suponemos que sólo queremos mostrar las entradas personalizadas “videojuegos” cuya taxonomía “Edad” sea 18 años, ponemos antes del loop:

Como veis hemos añadido “post-type” para poner el nombre de la entrada personalizada.

Y por último, sabed que incluso podemos combira meta_query con tax_query, como en este ejemplo:

Y esto es todo, ¡espero que os sea de utilidad!

AVISO: esta publicación es de hace dos años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

Valora este artículo para mejorar la calidad del blog ...

PobreRegularEstá bienMuy buenoExcelente (8 votos, promedio: 4,38 de 5)
Cargando…

Autor: Juan Diaz-Bustamante

Juan Díaz Bustamante es un freelance diseñador y programador de páginas web a través de su empresa de diseño web Emenia. Habitualmente escribe artículos en su blog sobre diseño y programación web.

Comparte esta entrada en
468 ad

ESTA WEB UTILIZA COOKIES PARA OFRECER LA MEJOR EXPERIENCIA POSIBLE. SI SIGUES NAVEGANDO DAS TU CONSENTIMIENTO PARA LA ACEPTACIÓN DE COOKIES Y NUESTRA POLÍTICA DE PRIVACIDAD más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar