Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Entradas aleatorias de una categoría en WordPress

Imago voragine.net
[actualizado el ]

He estado buscando la manera más fácil de conseguir una lista con un número determinado de entradas seleccionadas aleatoriamente de una o más categorías. Algo que parece tan inmediato, una simple consulta aleatoria a una base de datos, no parece estar muy extendido en WordPress.

Encontré varios plugins, pero no he conseguido hacer funcionar ninguno. En tech-buzz recomiendan el Random Posts Plugin de Wasabi, pero la página parece estar caída. Una pena, que las opciones que detallan en tech-buzz hacen al plugin bastante versátil, aunque no parece que tenga opción para seleccionar categorías.

A través del hilo de los foros de WordPress Display Random Posts from Specific Categories me encuentro otro plugin que tampoco he conseguido hacer funcionar.

Por lo que he visto WordPress no viene preparado para utilizar la orden «ORDER BY RAND()» de mysql, que es la que devuelve elementos de una tabla en orden aleatorio. Para permitir su uso hay que modificar el archivo query.php alojado en el wp-include/. Los cambios que hay que hacer son menores y no hay peligro de cargarse nada, según cuentan en la lista de correo donde lo he encontrado. Copio aquí los cambios exactos en el query.php que me han funcionado a mí:

Sin cambios:

$allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order');
...
if ( 'menu_order' != $orderby )
$orderby = 'post_' . $orderby;

Con cambios:

$allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order', 'rand');
...
if ( 'menu_order' != $orderby && 'rand' != $orderby)
$orderby = 'post_' . $orderby;
if ('rand' == $orderby)
$orderby = 'RAND()';

Tras los cambios, se puede usar con query_posts la opción rand en el atributo orderby. Por ejemplo, para conseguir una sola entrada aleatoria de la categoría Aleatorio:

query_posts('category_name=Aleatorio&showposts=1&orderby=rand')

10 comentarios

    • Por Guerry

    Mi buenskotperez, en el topic que mencioas de tech-buzz alguien actualizó la URL correcta del plugin:
    http://wasabi.pbwiki.com/Random%20Posts%20and%20Random%20Excerpts

    O checa el post:
    http://tech-buzz.net/2006/08/14/random-post-plugin-for-wordpress/

    Ya lo descargué y apenas lo voy a testear. Lo que no me gustó es que no mencionan con cuáles versiones es compatible.
    En fin.
    Saludos

  1. Gracias por la corrección, Guerry. En efecto no hay mucha información sobre el plugin, pero yo también lo probaré, pues me parecío, como ya apunté, bastante fácil de usar.

  2. En cualquier caso, añadir los cambios que indico arriba en el archivo query.php me parece más sencillo y da más libertad a la hora de llamar aleatoriamente a cualquier comando dentro del Loop

    • Por fernando •

    hola…
    en relacion a :

    https://voragine.net/wordpress/lista-de-entradas-aleatorias-de-una-categoria

    Funciona este metodo para mostrar entradas aleatorias?

  3. Claro, Fernando, cambiar las líneas del archivo query.php precisamente sirve para conseguir mostrar una lista con el número de entradas aleatorias que quieras. Sólo tendrás que introducir, tras los cambios en query.php, el código que especifico en el lugar donde quieras que aparezcan las entradas.

    • Por Rutrus

    A partir de la versión 1.7 de WordPress puedes usar directamente query_posts('category_name=Aleatorio&showposts=1&orderby=rand')

    • Por Rutrus

    Perdón, lógicamente me refería a la vesrión 2.7 de WP.

    Me ha sido muy útil.

  4. Sí, efectivamente, eso es justo lo que comento en un post más reciente. Gracias por la receta, en cualquier caso.

Dejar un comentario

*
*

 

2 trackbacks