X

Como exibir posts em uma ordem aleatória e manter a ordem de paginação

Snippets by IsItWP

Deseja exibir publicações em uma ordem aleatória e, ao mesmo tempo, manter a ordem de paginação? Esse snippet permitirá que você exiba uma lista aleatória de publicações aleatórias que permanecem na mesma ordem enquanto a sessão existir. Isso garante que a paginação seja consistente.

Instruções:

Tudo o que você precisa fazer é adicionar esse código ao arquivo functions.php do seu tema ou em um plug-in específico do site:


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;
}

Observação: Se esta é a primeira vez que você adiciona trechos de código no WordPress, consulte nosso guia sobre como copiar/colar corretamente trechos de código no WordPress para não danificar seu site acidentalmente.

Se você gostou desse snippet de código, considere dar uma olhada em nossos outros artigos no site, como: 7 Best Drag and Drop WordPress Page Builders Compared.

Comentários   Deixe uma resposta

  1. Thank you!

    It works like a charm…. but it creates 9 additional post-pages at the end, landing to “404 Page Not Found”

    Any thoughts?

    Thank you in advance.

    Josh

  2. Thank You! it works like a charm… but How about when using a Cache plugin?… I’ve purged all cache and still it doesn’t work in first page only.

    Any thoughts is appreciated.

    Thanks once again.

    Josh.

  3. exactly what I was looking for, thank you!!

  4. Hi, this code works very well. The only problem is that in the front page it also shows the “recent post” widget in randon order. Some idea how to change that?

    1. I didn’t notice it until you mentioned it but we have exactly the same problem, glad you pointed it out.

      Did you manage to solve it somehow?

  5. I put in the snippet using the snippet plugin. I am just setting up this site locally and only have 4 test posts. I do not notice the posts randomizing….at what point does the randomize happen?

  6. Riccardo Vezzani junho 18, 2019 em 12:17 pm

    THANK YOU!!

  7. THANK YOU SO MUCH!!! YOU HELPED ME SO MUCH!!!

    1. Glad the snippet was helpful

  8. Is this supposed to fix the ‘second page random posts’ issue? Or is it to illustrate the issue? I’ve used it to generate some randomly ordered posts, but when I go to the second page, the randomisation obviously starts again, because I may or may not get the same posts appearing.

  9. Thanks a lot. I had been looking for code like this to share more articles with the rrader at the end of my site.

Adicionar um comentário

Ficamos felizes por você ter optado por deixar um comentário. Lembre-se de que todos os comentários são moderados de acordo com nossa política de privacidade, e todos os links são nofollow. NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.

WordPress Launch Checklist

A lista de verificação definitiva para o lançamento do WordPress

Compilamos todos os itens essenciais da lista de verificação para o lançamento de seu próximo site WordPress em um ebook prático.
Sim, envie-me o livro eletrônico gratuito grátis!