Taxonomías

Imaginemos un blog de música en el que se pasa revista a las últimas novedades. Aparte de la crítica, deberá ofrecer información básica como el nombre del autor o grupo, estilo musical, etc. La forma más sencilla de ofrecer estos datos no es otra que las taxonomías. Por lo tanto, lo primero será ponerlas en marcha: Taxonomías avanzadas en WordPress 3.1.

El segundo paso sería añadir una nueva página donde se mostrara un listado de todos los autores o grupos musicales, otra con los estilos musicales, etc. Para ello usaríamos la función get_terms. Así lo hacemos y vamos escribiendo entradas hasta que nos encontramos con que, por ejemplo, el número de los primeros supera los mil. Por tanto, decidimos dividir el listado en varias páginas.

¡Ojo! NO estamos hablando del campo "author" que identifica a quien publica una entrada sino de los autores que han compuesto la música.

El tercer paso es preparar una plantilla (podemos usar como base el archivo page.php). En nuestro caso podemos eliminar todo excepto las divisiones principales (dependerá de cada tema) y las llamadas al header, sidebar y footer. El archivo resultante, en lugar de page_personalizada.php, lo llamaremos listado-autores.php y en el encabezamiento pondremos:

<?php
/*
Template Name: Listado autores
*/
?>

Todo el código que se muestra a continuación debe insertarse en el archivo listado-autores.php.

Cuarto paso: construir el array y lo necesario para paginar:

<?php
$page = ( get_query_var('paged') ) ? get_query_var( 'paged' ) : 1;
$per_page = 300;
$offset = ( $page-1 ) * $per_page;
$args = array(
'orderby' => 'slug',
'number' => $per_page,
'offset' => $offset,
'paged' => $paged
);
?>

La variable $per_page determina el número de autores a mostrar en cada página y $orderby el orden en el que se mostrarán. Recomiendo usar slug para evitar errores con ciertos caracteres. El resto de las líneas no deben modificarse.

Quinta parte: llamar a la función get_terms  y ejecutar un bucle. Nota: Para no alargar el comentario en demasía, omito la parte que permite mostrar el listado en tres columnas e indico solo la forma para una lista sin ordenar. Si alguien está interesado en el código completo, que me lo pida.

Nota: autor es el nombre de la taxonomía. Debéis cambiarlo por el que corresponda.

<?php
    $terms = get_terms("autor", $args);
    echo '<ul>';
    foreach ($terms as $term) {
        echo '<li><a href="'. get_term_link($term->slug, 'autor') . '" title="' . $term->count . ' artículos">'. $term->name.'</a></li>' . "\n";
    }
    echo '</ul>';
?>

Sexta parte: el código necesario para mostrar las páginas.

<?php
$total_terms = wp_count_terms('autor');
$pages = ceil($total_terms/$per_page);
if( $pages > 0 ):
	echo '<div class="paginterna">';
    for ($pagecount=1; $pagecount <= $pages; $pagecount++):
		if ($paged == $pagecount) :
			$ruta = '<span class="maspaginas">Pág.' . $pagecount . '</span>';
			else:
			if ($pagecount == 1 and $paged <=1):
				$ruta = '<span class="maspaginas">Pág.' . $pagecount . '</span>';
				else:
				$ruta = '<span class="maspaginas"><a href="'.get_permalink().'page/'.$pagecount.'/">Pág. '.$pagecount.'</a></span>';
			endif;
		endif;
		echo $ruta;
	endfor;
	echo '</div>';
endif;
?>

Como podéis comprobar, hemos usado dos estilos: paginterna y maspaginas. Lo mismo de antes; si alguien está interesado que me lo diga.

Finalmente creamos una nueva página y en el apartado "Plantilla" (sección "Atributos de página") seleccionamos "Listado autores" (ver el tercer paso).

Y el resultado lo podéis ver el la Revista de Prensa: Archivo por autores.