Introducción a las taxonomías personalizadas de WordPress
Publicado por: Deryck Oñate Espinel en mayo 5, 2011
Este artículo forma parte de una serie que iremos publicando gradualmente sobre nuevas funcionalidades implementadas o mejoradas con la salida de WordPress 3.0
Anteriormente ya hemos visto como Crear tu primer contenido personalizado con WordPress. En este artículo vamos a expandir las opciones de nuestro pequeño y simple administrador de libros agregando la posibilidad de asignar categorías personalizadas, llamada taxonomías en WordPress. Vamos a continuar trabajando entonces en el mismo fichero llamado ns_books.php que hemos creado para el administrador de libros.
Registrando la taxonomía
Lo primero es declarar las variables que utilizaremos para las cadenas de texto que utilizarán las nuevas taxonomías asignadas a los libros. Para ello insertamos el siguiente código al final del archivo preferiblemente aunque puedes insertarlo donde prefieras, siempre fuera de alguna función para evitar complicaciones.
add_action('init', 'books_tax_register');
function books_tax_register() {
$genre_labels = array(
'name' => _x( 'Géneros', 'taxonomy general name' ),
'singular_name' => _x( 'Género', 'taxonomy singular name' ),
'search_items' => __( 'Buscar géneros' ),
'all_items' => __( 'Todos los géneros' ),
'parent_item' => __( 'Género superior' ),
'parent_item_colon' => __( 'Género superior:' ),
'edit_item' => __( 'Editar género' ),
'update_item' => __( 'Actualizar género' ),
'add_new_item' => __( 'Crear nuevo género' ),
'new_item_name' => __( 'Nuevo nombre de género' ),
'menu_name' => __( 'Género' ),
);
register_taxonomy( 'genero', array('libros'), array( 'hierarchical' => true, 'labels' => $genre_labels, 'query_var' => true, 'rewrite' => true ) );
}
Ya con este código basta para crear una nueva taxonomía llamada Género. Vamos ir explicando el código para su mejor comprensión.
Con la función add_action() estamos ordenando a WordPress que al inicializarse ejecute otra función llamada books_tax_register que es la encargada de ejecutar todo el código necesario. Creamos inicialmente un arreglo (Array) llamado $genre_labels que contendrá todos los valores de las cadenas de texto que utilizará la página de edición de la taxonomía y en el menú.
La función register_taxonomy() es la encargada de registrar la taxonomía. En este caso solo registramos una pero pueden registrarse tantas como sea necesario llamando la función nuevamente con nuevos parámetros.
Los parámetros son: register_taxonomy($nombre_taxonomía, $tipo_post, $argumentos)
- $nombre_taxonomía: Es un valor tipo texto con el cual se define el identificador de la taxonomía. En este caso es ‘genero’ sin tildes ni signo alguno de puntuación para evitar problemas.
- $tipo_post: Es el tipo de entradas al cual se asignará a esta taxonomía. Puede ser “post”, “page” entre otros ya sean internos o declarados como en este caso que es “libros”. Ha sido declarado como un arreglo para facilitar el poder asignarlo a varios tipos de entradas o contenidos a la vez. En este caso solo es para “libros”.
- $argumentos: Es un arreglo que contiene parámetros que definirán el comportamiento de la taxonomía y que comento en detalle a continuación:
- hierachical: Acepta true or false en caso de ser true acepta jerarquía de categorías permitiendo crear categorías subordinadas a otras. En caso de ser false se comporta como las etiquetas comunes de WordPress.
- labels: Es un arreglo que contiene todas las cadenas de texto que utilizará la taxonomía en las páginas de administración. En este caso utiliza $genre_labels, el arreglo que ya he definido previamente.
- query_var: Permite hacerle saber a WordPress si vas a poder filtrar luego artículos utilizando esta taxonomía.
- rewrite: Al activarla con true permite que las taxonomías utilicen urls amigables. Hay otros parámetros que pueden utilizarse que no son tan comunes pero pueden permitir un mayor nivel de personalización en caso de que sea necesario.
Para más información puedes ver la referencia a register_taxonomy() en el Codex de WordPress.

Para asignar las taxonomías solo hay que editar la entrada deseada y marcar los valores que correspondan.
Como mostrar las taxonomías asignadas a un artículo.
Asumiendo que ya tenemos algunos artículos creados vamos a visualizar los géneros a los cuales pertenece cada libro en el momento que mostremos alguno. En este caso para mantenerlo simple seguiremos utilizando el theme “Twenty Ten” que viene instalado y predeterminado con WordPress.
Abre el fichero loop-single.php y busca la siguiente linea de código:
<div class="entry-utility">
Justo antes de cerrar el <div> inserta el siguiente código que explicaré a continuación:
$genre = get_the_term_list( $post->ID, 'genero', '<strong>Género(s):</strong> ', ', ', '' ); if ($genre != '') echo ' <div>' . $genre . '</div> ';
La función get_the_term_list() lee las taxonomías asignadas a un artículo y las muestra con el formato especificado en los parámetros de la misma.
Lo parámetros son:
- $post_id: El ID del artículo del cual queremos extraer las taxonomías. Generalmente se utilizar $post->ID ya que casi siempre esto se hace dentro del “Loop” the WordPress.
- $taxonomía: Es una cadena de texto que contiene la taxonomía que queremos mostrar. En este caso es ‘genero’ que es la que hemos declarado y con la que hemos estado trabajando.
- $antes: Es una cadena de texto que aparecerá antes del listado de taxonomías.
- $separador: Es una cadena de texto que utilizará como separador entre valores de la taxonomía.
- $después: Es una cadena de texto que aparecerá al final del listado de taxonomías.
Para mas información puedes ver la referencia a get_the_term_list() en el Codex de WordPress.
Luego de asignar el resultado de get_term_list() a la variable $genre he puesto una estructura condicional if() que evalúa si $genre tiene resultado y en caso de ser así la muestra. Es importantísimo evaluar si contiene datos porque de lo contrario puede generar un error o imprimir código no deseado si el artículo no tiene asignada la taxonomía.

Conclusión
Espero que este artículo te sea de utilidad para iniciarte con el novedoso sistema de taxonomías de WordPress. Hay mucha tela por donde cortar y mucho por escribir pero el objetivo de este artículo es introducirte en el uso de las taxonomías sin complicarte demasiado. En el Codex de WordPress hay muchísima información para para buscarse unos cuantos dolores de cabeza complicando el código para obtener resultados más avanzados.
Archivado en: Tutoriales, Trucos y Recursos

Escribe un comentario