11. Taxonomías

¿Qué es una taxonomía?

Una taxonomía es, basicamente, una forma elegante de clasificar o agrupar cosas. En WordPress, generalmente clasificarás artículos. Las taxonomías pueden anidar con padres o hijos, o bien estar solas.

 

Taxonomías por defecto de WordPress

Existen dos taxonomías por defecto que forman parte del núcleo de WordPress: las categorías y las etiquetas.

Son similares por su naturaleza, siendo maneras abstractas de agrupar contenido. Su principal diferencia consiste en la manera en que se aplican:

  • Las categorías están a menudo predefinidas, generalmente definidas y utilizadas más escasamente.
  • Las etiquetas están a menudo sobre la marcha, más específicas y se usan más frecuentemente.

Por ejemplo, un artículo describiendo cómo hornear un pastel de chocolate alemán podría tener una categoría de postre, una subcategoría de pastel, y etiquetas de chocolate aleman, coco, y chocolate.

 

Taxonomías personalizadas

Como en los tipos de artículos, WordPress tiene algunas taxonomías pre-construidas. Categoría es probablemente la más conocida. Utilizando las funciones adecuadas es posible registrar nuevas taxonomías, y vincularlas a cualquier tipo de artículo, no sólo los personalizados.

Esto significa que puedes crear, por ejemplo, una taxonomía personal paises, para tus artículos de un blog de viajes.

 

Resumen

Este capítulo te dará algunos conocimientos sobre taxonomías, y te mostrará cómo crear taxonomías, como recuperar su contenido de la base de datos, y cómo mostrarlas en la parte visible de tu sitio web.

 

Trabajar con taxonomías personales

Taxonomías personales

WordPress permite a los desarrolladores crear taxonomías personales. Estas son útiles cuando uno quiere crear distintos sistemas de nombres y lo hace de una manera predecible de forma oculta. Como sistemas de clasificación, Categorías y Etiquetas no están muy estructurados, por lo que puede resultar beneficioso a un desarrollador crear sus propios sistemas.

 

¿Por qué utilizar taxonomías personales?

Te puedes preguntar, ¿por qué crear una taxonomía personal, cuando puedo organizar por categorías y etiquetas?

Bien… utilicemos un ejemplo. Suponte que tienes un cliente que es un jefe que quiere un blog en el que presentará recetas originales. Una forma de organizar el sitio podría ser crear un tipo de artículo personalizado llamado ‘Recetas’ donde guardar sus artículos de recetas, y taxonomías para ‘Platos’ para separar aperitivos de postres, e ‘Ingredientes’ para separar patatas de chocolate.

Estos grupos se pueden definir mediante Categorías o Etiquetas, ya que se pueden definir jerárquicamente. La ventaja de utilizar Taxonomías Personales es que puedes referenciar ‘Recetas’‘Ingredientes’ independientemente de Categorías y Etiquetas. Siempre tienen sus propios lugares en el Menú de Administración.

Supón un desarrollador creando su blog de recetas para un chef que no es técnico. En tal caso, el desarrollador puede querer crear interfaces personalizados para editar o seleccionar ‘Recetas’‘Ingredientes’. El uso de taxonomías personales es una manera de hacerlo.

Además, la interfaz de taxonomía personal permite al desarrollador crear plugins para manejar las taxonomías sin conocer los detalles de las mismas. Por tanto, en lugar de desarrollar una interfaz personalizada para ese sitio específico, un plugin puede ser diseñado para reutilizarlo en cualquier sitio WordPress y para todas las taxonomías.

 

Ejemplo simple: Taxonomía ‘platos’

Observa un momento el siguiente ejemplo sencillo para ver cómo crear la taxonomía ‘Platos’ mencionada anteriormente. Sólo se comentan las opciones requeridas.

  • Paso 1. Antes de empezar …

Antes de empezar, ve al panel de administración ‘Entradas’ > ‘Añadir nueva’ y observa que sólo tienes metaboxes de las taxonomías Categorías y Etiquetas.

  • Paso 2. Crea un nuevo plugin

Crea un nuevo plugin llamado Taxonomía Platos, mediante las instrucciones dadas en el capítulo 2. Conceptos básicos de los plugins de esta serie.

  • Paso 3. Registro de taxonomías en ‘Add Action’

Añade el siguiente código PHP en tu fichero de plugin.

  • Paso 4. Revisa el resultado

Activa tu plugin, entonces ve a ‘Entradas’ > ‘Añadir nueva’. Verás que se ha generado un nuevo metabox de tu taxonomía automáticamente.

 

Análisis del código

A continuación vamos a descomponer el código anterior, y describir lo que hacen las funciones y los parámetros.

  • El gancho acción

add_action( ‘init’, ‘create_course_taxonomies’, 0 );

Ejecuta tu función de crear la taxonomía en el momento de que se cargue WordPress.

  • La función

function create_course_taxonomies() {

Simplemente, ejecuta la función en ‘init’. En esta función vamos a crear la taxonomía.

  • Etiquetas (labels)

Esta matriz provee las etiquetas para los diversos elementos de la administración de la interfaz de usuario. No se está haciendo nada, sólo declarando.

  • Argumentos

Esta es una matriz que estructuralmente le dice a WordPress cómo trabajará la taxonomía.

‘hierarchical’ significa que tiene una interfaz de usuario como categorías, además de otra como etiquetas.

‘labels’ simplemente introduce la matriz ‘labels’ previamente creada.

‘show_ui’ permite elegir si muestra o no la interfaz de usuario.

‘show_admin_column’ permite decidir si verás cómo esta taxonomía se usa cuando estás en la administración de la entrada.

‘query_var’ provee una variable de consulta para esta taxonomía que puedes usar en la URL, o directamente en un WP_Query. Si está desactivada, entonces necesitarás acceder a la taxonomía con algo parecido a esto:

WP_Query( array( ‘taxonomy’=>’people’, ‘term’=>$person_name ) )

‘rewrite’ permite declarar el slug para esta taxonomía.

  • función register_taxonomy

register_taxonomy( ‘course’, array( ‘post’ ), $args );

Esta es la función que actualmente utiliza la matriz anterior. Primero declara el nombre de la taxonomía como ‘course’, entonces la asigna al tipo de contenido ‘post’, y le pasa la matriz $args.

 

Utilizar tu taxonomía

Utilizando el ejemplo anterior, WordPress creará automáticamente una página archive en /course/ y entonces otra para cada término.

WordPress, además, tiene varias funciones para interactuar tanto con taxonomías como con los terms de ellas.

Algunos ejemplos:

  • the_terms: Toma el argumento de una taxonomía y muestra los términos en una lista.
  • wp_tag_cloud: Toma el argumento de una taxonomía y muestra una nube de etiquetas de los terms.
  • is_taxonomy: permite determinar si una taxonomía dada existe.

 

Trabajar con “split terms” desde WP 4.2

Antes de WP 4.2, terms en taxonomías diferentes con el mismo slug compartían un mismo term ID. Desde WP 4.2, cuando uno de esos terms compartidos es actualizado, se divide: El term actualizado se le asignará un nuevo term ID.

En la inmensa mayoría de situaciones, esta actualización no conllevará mayor problema. Sin embargo, algunos plugins y temas guardan las term ID en opciones, post meta, user meta, o en otras partes. WP 4.2 incluyó dos herramientas diferentes para ayudar a los autores de estos plugins y temas con la transición.

La acción ‘split_shared_term’

Cuando un term compartido es asignado a un nuevo term ID, una nueva acción ‘split_shared_term’ se ejecuta. Plugins y temas que guardan los term ID, deberán enganchar a esta acción para realizar las migraciones necesarias. La documentación para el gancho es como sigue:

A continuación, unos pocos ejemplos de cómo los autores de plugins y temas pueden activar esta acción para asegurar que los term ID guardados se actualizan.

  • Actualizar un term ID guardado en una opción

Digamos que tu plugin guarda una opción llamada ‘feaured_tags’ que contiene una matriz de term IDs (update_option( ‘featured_tags’, array( 4, 6, 10 ) ) ). En este ejemplo, enganchas a ‘split_shared_term’, chequeas si el term ID actualizado está en la matriz, y lo actualizas si es necesario.

  • Actualizar un term ID guardado en un post meta

A veces un plugin guardará term IDs en post meta. En tal caso, utiliza una consulta get_posts() para localizar los posts con la meta key “primary_category” y un meta valor a tono con el term ID dividido. Una vez has identificado los posts, utiliza update_post_meta() para cambiar los valores guardados en la base de datos.

 

La función wp_get_split_term()

‘split_shared_term’ es el método preferido para procesar cambios de term ID. Sin embargo, puede haber casos – como una actualización de plugin -en que los terms están divididos (split), sin que tu plugin de una opción a enganchar a la acción ‘split_shared_term’. WP 4.2 guarda información acerca de terms de taxonomía que han sido divididos, y provee la función de utilidad wp_get_split_term() para ayudar a los desarrolladores a rescatar esa información.

Considera el caso a continuación, donde tu plugin guarda term IDs en una opción llamada ‘featured_tags’. Quieres construir una función que valida estas etiquetas ID (quizá para correr en una actualización de plugin), para estar seguro que ninguna de las etiquetas destacadas ha sido dividida:

Observa que wp_get_split_term() toma dos parámetros – $old_term_id$taxonomy – y devuelve un entero. Si necesitas recuperar una lista de todos los términos divididos asociados a un term ID antiguo, independientemente de la taxonomía, utiliza wp_get_split_terms( $old_term_id ).

 

Deja un comentario

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