X

Cómo mostrar publicaciones en orden aleatorio y mantener el orden de paginación

Snippets de IsItWP

¿Quieres mostrar publicaciones en orden aleatorio mientras conservas el orden de paginación? Este fragmento te permitirá mostrar una lista aleatoria de publicaciones aleatorias que permanecerán en el mismo orden mientras la sesión exista. Esto asegura que la paginación sea consistente.

Instrucciones:

Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico del sitio:

session_start();

add_filter( 'posts_orderby', 'randomise_with_pagination' );
function randomise_with_pagination( $orderby ) {

	if( is_front_page() ) {

	  	// Reset seed on load of initial archive page
		if( ! get_query_var( 'paged' ) || get_query_var( 'paged' ) == 0 || get_query_var( 'paged' ) == 1 ) {
			if( isset( $_SESSION['seed'] ) ) {
				unset( $_SESSION['seed'] );
			}
		}
	
		// Get seed from session variable if it exists
		$seed = false;
		if( isset( $_SESSION['seed'] ) ) {
			$seed = $_SESSION['seed'];
		}
	
	    	// Set new seed if none exists
	    	if ( ! $seed ) {
	      		$seed = rand();
	      		$_SESSION['seed'] = $seed;
	    	}
	
	    	// Update ORDER BY clause to use seed
	    	$orderby = 'RAND(' . $seed . ')';
	}

	return $orderby;
}

Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar / pegar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.

Si te gustó este fragmento de código, considera echar un vistazo a nuestros otros artículos en el sitio como: Los 7 mejores creadores de páginas de WordPress de arrastrar y soltar comparados.

Comentarios   Deja una respuesta

  1. ¡Gracias!

    Funciona a la perfección... pero crea 9 páginas de publicación adicionales al final, que llevan a "Página no encontrada 404".

    ¿Alguna idea?

    Gracias de antemano.

    Josh

  2. ¡Gracias! Funciona a la perfección... pero ¿qué pasa cuando se usa un plugin de caché?... He purgado toda la caché y todavía no funciona solo en la primera página.

    Cualquier idea es apreciada.

    Gracias una vez más.

    Josh.

  3. ¡Exactamente lo que estaba buscando, gracias!

  4. Hola, este código funciona muy bien. El único problema es que en la página principal también muestra el widget "publicaciones recientes" en orden aleatorio. ¿Alguna idea de cómo cambiar eso?

    1. No me había dado cuenta hasta que lo mencionaste, pero tenemos exactamente el mismo problema, me alegra que lo hayas señalado.

      ¿Lograste resolverlo de alguna manera?

  5. Puse el fragmento usando el plugin de fragmentos. Estoy configurando este sitio localmente y solo tengo 4 publicaciones de prueba. No noto que las publicaciones se aleatoricen... ¿en qué punto ocurre la aleatorización?

  6. Riccardo Vezzani June 18, 2019 at 12:17 pm

    ¡¡GRACIAS!!

  7. ¡¡¡MUCHAS GRACIAS!!! ¡¡¡ME AYUDASSTE MUCHO!!!

    1. Me alegra que el fragmento haya sido útil

  8. ¿Se supone que esto soluciona el problema de las 'segundas páginas con publicaciones aleatorias'? ¿O es para ilustrar el problema? Lo he usado para generar algunas publicaciones ordenadas aleatoriamente, pero cuando voy a la segunda página, la aleatorización obviamente comienza de nuevo, porque puedo o no obtener las mismas publicaciones.

  9. Muchas gracias. Había estado buscando un código como este para compartir más artículos con el lector al final de mi sitio.

Agrega un comentario

Nos complace que hayas elegido dejar un comentario. Ten en cuenta que todos los comentarios se moderan de acuerdo con nuestra política de privacidad, y todos los enlaces son nofollow. NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.

Lista de verificación para lanzar WordPress

La lista de verificación definitiva para lanzar WordPress

Hemos recopilado todos los elementos esenciales de la lista de verificación para el lanzamiento de tu próximo sitio web de WordPress en un práctico ebook.
¡Sí, envíame el eBook gratis!