jueves, 16 de septiembre de 2010

Widget "archivos" de Wordpress mostrando títulos de entradas

Problema: Quiero que el widget "archivos" de Wordpress (3.0.1) muestre la lista con los títulos de todas las entradas, en vez de una lista de meses y números de entradas en cada mes.


Como es un widget básico incluido en el núcleo de wordpress, la llamada a la función (wp_get_archives) que obtiene el listado final que muestra este widget, se encuentra en el fichero:


DirectorioSitioWordpress\wp-includes\default-widgets.php



Como vemos ahí.. a la función que obtiene el listado que muestra el widget Archivo, que es wp_get_archives, se le pasa el resultado de aplicar filtros suscritos al tópico "widget_archives_args".


wp_get_archives(apply_filters('widget_archives_args', array('type' => 'monthly', 'show_post_count' => $c)));


Esto nos permite enganchar un filtro (ni más ni menos que una función) que se encargará de modificar el parámetro "type" del array que recibe como argumento la función "wp_get_archives", de "monthly", que es el valor que tiene aquí por defecto, al valor que nosotros queramos. En este caso concreto, "postbypost", para que se muestren los títulos de todas las entradas obtenidas. Además, esa función interceptora, la vamos a colocar en el fichero functions.php del tema que tenemos activado. De esta forma, aunque se actualice la base de wordpress, como no se toca nuestro tema, nuestra modificación seguirá funcionando.

Así que, no tocamos nada en el fichero "default-widgets.php" y añadimos al fichero rutaDeNuestroTema/functions.php de nuestro tema el siguiente fragmento de código.:



/**
* Archive widget showing post names instead of monthly links.
*
*/

add_filter('widget_archives_args','showArchivePostByPost', 1, 1);



function showArchivePostByPost($wp_get_archives_args){
$wp_get_archives_args['type'] = 'postbypost';
return $wp_get_archives_args;
}


Lo ideal es que nuestro tema tambien sea una extensión de uno existente, de esta forma, las actualizaciones de temas tampoco nos afectarán negativamente.


Otros parámetros para obtener otros tipos de listado se pueden consultar en la página de documentación de la función wp_get_archives.