Existe una forma muy sencilla de redirigir a nuestros visitantes a un artículo aleatorio en WordPress. Cuando alguien ha terminado de leer un post tal vez necesite de alguna sugerencia para no abandonar el sitio. Una de las formas más habituales es utilizando uno de los diferentes plugins que llevan a artículos relacionados. También se puede diseñar un script, como el que aparece en muchas páginas, que proponen algunas lecturas en Nuestras sugerencias (Mostrar entradas aleatorias sin un plugin en WordPress). Ahora, después de haber descubierto la propuesta que nos hacen en WpRecipes, os invitamos a que propongáis la visita a uno de los artículos que alimentan vuestro sitio web.
El primer paso que debemos dar es crear un archivo, de nombre page-random.php, que incluiremos en la carpeta del tema activo. Ese archivo se ocupará de buscar entre todos los artículos publicados en el sitio uno al azar. Este es el contenido del script:
<?php // Definir argumentos para get_posts() $args = array( 'numberposts' => 1, 'orderby' => 'rand' ); // Cargar un artículo aleatorio desde la base de datos $my_random_post = get_posts ( $args ); // Procesar la solicitud a la base de datos a través de un bucle foreach foreach ( $my_random_post as $post ) { // redirect the user to the random post wp_redirect ( get_permalink ( $post->ID ) ); exit; } ?>
Como podrás comprobar se trata de un script muy sencillo, sin grandes pretensiones, pero que hace el trabajo a la perfección.
Tras subir el archivo anterior, a través de FTP, a tu espacio web, crea una nueva página (no entrada) en el Panel de Administración de WordPress y llámale random. No introduzcas ningún contenido en dicha página.
Incluye, por ejemplo al final del loop del archivo single.php del tema activo, un enlace similar al siguiente:
<a href="http://www.dominio.com/random">Artículo aleatorio</a>
No te olvides de sustituir la URL por la de tu sitio, eso sí, tampoco te olvides de añadir random al final, tal como indicamos. Puedes cambiar Artículo aleatorio por la frase que desees. Así, en el lugar que indiques, se mostrará una referencia a ese artículo, al que aparezca en cada ocasión.
Buenas tardes lluviosas. Lo primero, una vez más, es darte las gracias por tu script que funciona de maravilla. lo segundo es pedirte, por favor, si se puede hacer para solo salgan post de una categoría determinada. Lo he intentado con este script pero no me funciona:
‘categoria1’,
‘numberpost’ => 1,
‘orderby’ => ‘rand’,
‘date_query’ => array(
array(
‘after’ => ‘1 year ago’,
),
),
);
// Cargar un articulo aleatorio desde la base de datos
$my_random_post = get_posts ( $args );
// Procesar la solicitud a la base de datos a traves de un bucle foreach
foreach ( $my_random_post as $post ) {
// redirect the user to the random post
wp_redirect ( get_permalink ( $post->ID ) );
exit;
}
?>
Muchas gracias por anticipado
Te recomiendo que le eches un vistazo a este artículo. En él se muestran las posibles formas de mostrar artículos publicados en WordPress.
Saludos.
muchas gracias pero no tengo conocimiento para entenderlo. Por favor, ¿puedes hacer el cambio sobre mi actual script? muchas gracias, perdón por molestarte tanto:
‘articulos’,
‘numberpost’ => 1,
‘orderby’ => ‘rand’,
‘date_query’ => array(
array(
‘after’ => ‘1 year ago’,
),
),
);
// Cargar un articulo aleatorio desde la base de datos
$my_random_post = get_posts ( $args );
// Procesar la solicitud a la base de datos a traves de un bucle foreach
foreach ( $my_random_post as $post ) {
// redirect the user to the random post
wp_redirect ( get_permalink ( $post->ID ) );
exit;
}
?>
aaaa lo conseguí:
‘cat’ => ’17’,
muchas gracias de nuevo.
Curro
Buenos días, pregunta: una vez aparecida la página de forma aleatoria… ¿se podría pasar automáticamente a la siguiente página?
Gracias por anticipado,
Si el tema que tienes instalado soporta esa opción, tal como ocurre en Lecciones – Ordenadores e Internet, se mostrará un enlace, al final del artículo, al siguiente y al anterior post. Ello no tiene nada que ver con lo que explico en este artículo.
Saludos.
gracias, me refería a que lo haga él solo automáticamente, por favor, ¿es posible?
Saludos
No, no es posible. Para hacer lo que solicitas habría que cambiar totalmente el código.
Saludos.
ok gracias de todas formas.
hola y gracias por tu idea que funciona muy bien. una pregunta, se podría hacer para acotarlo por fechas? es decir que muetre aleatorio pero entre 2015 y 2017 solamente, o que sean mayores de una fecha?
gracias por anticipado.
curro
Hola, buenas noches.
Excelente artículo y me funcionó a la perfección, ahora ya que tengo un sólo post aleatorio, también me interesa poner una página como el index, pero con artículos aleatorios, no se si me entiendes.
Va a depender del tema que tengas activo. Si, por ejemplo, existen predefinidos varios modelos, como pueden ser para crear un sitemap, o una página que incluya archivos multimedia, entre otros modelos, sólo tendrías que crear un template nuevo en el que incluyeses el código que indico, pero cambiando el número de posts, que aquí se refiere a 1, por el número que desees. A continuación tendrías que crear una página, desde el Panel de Administración de WordPress, que incluyese ese template y a la que podrías llamar Artículos aleatorios. Siempre que se llame a esa página, se mostrará el número de artículos indicado.
Si el tema que tienes instalado no soporta esta capacidad, habría que arbitrar otra solución.
Saludos.
hola, buenas tardes excelente articulo.
Tengo una duda como le puedo hacer para que se muestren los últimos 5 artículos de forma aleatoria, es decir, quiero mostrar solo un articulo a la ves y este vaya cambiando al actualizar la página, pero que sean solo los últimos 5 y no todos los de la base de datos.
Las posibilidades que tienes a la hora de mostrar un post viene explicado en A more powerful ORDER BY in WordPress 4.0. Lo que pides tú requiere de un script más complejo.
Saludos.