sábado, 18 de junio de 2011

Crear taxonomias

Taxonomías en WordPress

Escrito el por Juan Diaz-Bustamante
Translate this page into English
El uso de Categorías y de Etiquetas (Tags en Inglés) es muy habitual en WordPress. A la hora de crear una nueva entrada podemos asignarle una categoría (normalmente una categoría por entrada) y uno o varias etiquetas (normalmente varias etiquetas por entrada). Esto nos permite clasificar la información que estamos publicando para que luego sea más sencillo acceder a ella en función de las necesidades del usuario.
Tanto las Categorías como las Etiquetas son Taxonomías. ¿Qué es una Taxonomía? Veamos lo que dice el diccionario:
taxonomía. Ciencia que trata de los principios, métodos y fines de la clasificación. Se aplica en particular, dentro de la biología, para la ordenación jerarquizada y sistemática, con sus nombres, de los grupos de animales y de vegetales. 2. Por ext., clasificación.
Por defecto, WordPress incluye tres taxonomías: categoría, etiquetas y categoría de los enlaces. En este artículo veremos cómo enriquecer las taxonomías de nuestro tema de WordPress creando nuestras propias Taxonomías.
Desde WordPress 2.8 es mucho más sencillo crear Taxonomías propias (Custom Taxonomies en Inglés) que nos pueden dar más flexibilidad que las tradicionales Categorías y Etiquetas. Esto puede sernos de utilizad para entradas que requieren un número alto de criterios de clasificación, de tal forma que las Categorías y las Etiquetas se nos queden cortas.
Por ejemplo, imaginémonos que tenemos una web de música y queremos introducir canciones y clasificarlas por Artista, Album, Género, Epoca, Autor, Duración, etc… Necesitamos la ayuda de las Taxonomías creadas por el usuario. Veremos que funcionan de manera muy parecida a las etiquetas.
Sigamos con el ejemplo de la web de música. Supongamos que tenemos esta canción:
Shine on your Crazy Diamond
Artista: Pink Floyd
Album: Wish you were here
Género: Rock Progresivo
Autor: Pink Floyd
Duración: 13:32 minutos
Fecha: 1975
La idea es poder fijar toda esta información a una entrada que realices sobre esta canción de forma parecida a como lo harías con las etiquetas. Para empezar tienes que registrar las taxonomías para luego poder utilizarlas. Esto lo haces en el archivo functions.php de tu tema de WordPress. Escribríamos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function taxonomias_propias() {
        register_taxonomy('artista', 'post', array(
                    'hierarchical' => false, 'label' => 'Artista',
                    'query_var' => true, 'rewrite' => true));
        register_taxonomy('album', 'post', array(
                    'hierarchical' => false, 'label' => 'Album',
                    'query_var' => true, 'rewrite' => true));
        register_taxonomy('genero', 'post', array(
                    'hierarchical' => false, 'label' => 'Género',
                    'query_var' => true, 'rewrite' => true));
        register_taxonomy('autor', 'post', array(
                    'hierarchical' => false, 'label' => 'Autor',
                    'query_var' => true, 'rewrite' => true));
        register_taxonomy('duracion', 'post', array(
                    'hierarchical' => false, 'label' => 'Duración',
                    'query_var' => true, 'rewrite' => true));
        register_taxonomy('fecha', 'post', array(
                    'hierarchical' => false, 'label' => 'Fecha',
                    'query_var' => true, 'rewrite' => true));
    }
    add_action('init', 'taxonomias_propias', 0);
Vamos a ver en detalle qué hemos hecho. Tomemos la primera taxonomía, artista:
1
2
3
register_taxonomy('artista', 'post', array(
         'hierarchical' => false, 'label' => 'Artista',
         'query_var' => true, 'rewrite' => true));
artista le dice a WordPress cuál es el nombre de la Taxonomía.
post indica el tipo de objeto sobre el que se aplica la Taxonomía, en este caso entradas (post). Más abajo veremos cómo crear taxonomías en páginas.
hierarchical indica si los términos de la taxonomía van a estar jerarquizados (las categorías lo estan, las etiquetas no). Lo ponemos como false (falso) para que se comporten como las etiquetas.
Artista es el nombre de la taxonomía tal y como queremos que aparezca en el panel de administración de WordPress.
query_var permite saber a WordPress si vas a querer poder seleccionar artículos utilizando la taxonomía. Más adelante veremos cómo. Ponemos TRUE (es decir, que sí vamos a querer poder hacerlo).
rewrite es para si quieres que WordPress ofrezca urls amigables cuando se vea una página o archivo de una taxonomía (por ejemplo www.tusitio.es/autor/pink-floyd). Como sí queremos, ponemos TRUE (cierto).
Bien, ya hemos registrado nuestras taxonomías propias en el archivo functions.php de nuestro tema. Ahora si entramos en el administrador de WordPress y abrimos o creamos una nueva entrada veremos que la columna lateral derecha (donde están las categorías y las etiquetas) ha cambiado. Ahora veremos (tengo una instalación de WordPress en inglés, pero si lo tenéis en Castellano os saldrá bien):


Veremos que en cada casilla de cada nueva taxonomía podemos añadir una nueva etiqueta. Si, el funcionamiento ahora es como el de las etiquetas normales, lo que pasa es que ahora tenemos varios grupos personalizados de etiquetas.
También saldrás las taxonomías nuevas en el menú de la izquierda, al desplegar Entradas.
Una vez publicada la entrada podemos acceder directamente, por ejemplo, a
http://www.tusitio.es/autor/pink-floyd/
Estas nuevas URLs utilizarán archive.php de tu tema de WordPress para mostrar todas las entradas que correspondan a esa taxonomía.
Si queremos mostrar una nube de etiquetas de una taxonomía en concreto (por ejemplo todos los Autores) lo haríamos con este código en cualquier sítio de cualquier archivo de nuestro tema:
1
2
<h3>Autores</h3>
<?php wp_tag_cloud(array('taxonomy' => 'autor', 'number' => 0)); ?>
En vez de autor pondríamos el nombre de la taxonomía que queramos, y en número (number) el número de etiquetas a mostrar de esa taxonomía (si ponemos 0, como en este caso, salen todas).
Si queremos que salgan todas las taxonomías y su nube de etiquetas podemos seguir las indicaciones de justintadlock.com:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php global $wp_taxonomies; ?>
 
<?php if ( is_array( $wp_taxonomies ) ) : ?>
 
 <?php foreach ( $wp_taxonomies as $tax ) : ?>
 
  <h2 class="taxonomy-label"><?php echo $tax->label; ?></h2>
 
  <p class="taxonomy-cloud">
   <?php wp_tag_cloud( array( 'taxonomy' => $tax->name, 'number' => 0 ) ); ?>
  </p><!-- .taxonomy-cloud -->
 
 <?php endforeach; ?>
 
<?php endif; ?>
Para mostrar todas las entradas que tengan una etiqueta concreta de una de nuestras taxonomías (por ejemplo, las 15 primeras entradas entradas con autor Pink Floyd) tendríamos que situar este código antes del loop de uno de los archivos de nuestro tema:
1
2
3
4
<?php query_posts(array('autor' => 'Pink Floyd', 'showposts' => 15)); ?>
// Y ahora va el loop:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
// Etc..
Si queremos que se muestre para cada artículo una taxonomía concreta y los enlaces de las etiquetas relacionadas (por ejemplo, Autor: Pink Floyd donde Pink Floyd es un enlace) utilizaríamos este código en el sitio donde queremos que salgan los enlaces de las etiquetas separadas con comas dentro del loop:
1
<?php echo get_the_term_list($post->ID, 'autor', 'Autor: ', ', ', ''); ?>
Los tres últimos parámetros le indican a WordPress qué escribir antes de los enlaces de las etiquetas, entre cada enlace y tras cada enlace.
Condicionales que podemos usar con las taxonomías:
is_tax(), is_tax(‘nombre-de-la-taxonomia’), is_tax(array(‘nombre1′,’nombre2′,’nombre3′))
Como veis el uso de las taxonomías es muy sencillo y nos puede permitir mejorar el uso de WordPress para crear webs de mayor complejidad. Gracias a la posibilidad de crear nuevas plantillas y sabiendo que podemos acceder a una taxonomía en concreto a través de una url amigable podemos crear menús y submenús con facilidad en los que accedamos a páginas concretas para cada taxonomía, por ejemplo.

Taxonomías en páginas

En el ejemplo anterior creábamos taxonomías para su uso en entradas (posts). Ahora veremos cómo crearlas en las páginas.
Fuente: http://justintadlock.com/archives/2009/11/09/excerpts-and-taxonomies-for-pages-in-wordpress-2-9
Hay que recordar que en WordPress 2.9 las Taxonomías no admiten jerarquización, como las categorías.
Supongamos que creamos una Taxonomía para páginas llamada “people”:
1
2
3
4
5
6
7
8
9
10
11
12
register_taxonomy( 'people', 'page', array( 'hierarchical' => false, 'label' => 'People', 'query_var' => true, 'rewrite' => true ) );
 
add_action( 'admin_menu', 'my_page_taxonomy_meta_boxes' );
 
function my_page_taxonomy_meta_boxes() {
 foreach ( get_object_taxonomies( 'page' ) as $tax_name ) {
  if ( !is_taxonomy_hierarchical( $tax_name ) ) {
   $tax = get_taxonomy( $tax_name );
   add_meta_box( "tagsdiv-{$tax_name}", $tax->label, 'post_tags_meta_box', 'page', 'side', 'core' );
  }
 }
}

No hay comentarios:

Publicar un comentario