X

Como Exibir Posts em Ordem Aleatória e Manter a Ordem da Paginação

Snippets por IsItWP

Você quer exibir posts em ordem aleatória enquanto mantém a ordem da paginação? Este trecho permitirá que você exiba uma lista aleatória de posts aleatórios que permanecem na mesma ordem enquanto a sessão existir. Isso garante que a paginação será consistente.

Instruções:

Tudo o que você precisa fazer é adicionar este código ao arquivo functions.php do seu tema ou em um plugin 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 snippets de código no WordPress, consulte nosso guia sobre como copiar / colar snippets de código corretamente no WordPress, para não quebrar acidentalmente seu site.

Se você gostou deste trecho de código, considere conferir nossos outros artigos no site, como: 7 Melhores Construtores de Páginas WordPress Drag and Drop Comparados.

Comentários   Deixe uma Resposta

  1. Obrigado!

    Funciona que é uma maravilha... mas cria 9 páginas de posts adicionais no final, levando a "Página 404 Não Encontrada"

    Alguma ideia?

    Obrigado antecipadamente.

    Josh

  2. Obrigado! Funciona que é uma maravilha... mas e quando se usa um plugin de Cache?... Eu limpei todo o cache e ainda assim não funciona apenas na primeira página.

    Qualquer pensamento é apreciado.

    Obrigado mais uma vez.

    Josh.

  3. exatamente o que eu estava procurando, obrigado!!

  4. Olá, este código funciona muito bem. O único problema é que na página inicial ele também mostra o widget "posts recentes" em ordem aleatória. Alguma ideia de como mudar isso?

    1. Eu não tinha notado até você mencionar, mas temos exatamente o mesmo problema, ainda bem que você apontou.

      Você conseguiu resolver de alguma forma?

  5. Coloquei o trecho usando o plugin de trechos. Estou apenas configurando este site localmente e tenho apenas 4 posts de teste. Não percebo os posts aleatorizados... em que ponto a aleatorização acontece?

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

    OBRIGADO!!

  7. MUITO OBRIGADO!!! VOCÊ ME AJUDOU MUITO!!!

    1. Fico feliz que o trecho tenha sido útil

  8. Isso deveria corrigir o problema de 'segunda página com posts aleatórios'? Ou é para ilustrar o problema? Eu o usei para gerar alguns posts ordenados aleatoriamente, mas quando vou para a segunda página, a aleatorização obviamente recomeça, porque posso ou não obter os mesmos posts aparecendo.

  9. Muito obrigado. Eu estava procurando por um código como este para compartilhar mais artigos com o leitor no final do meu site.

Adicionar um comentário

Ficamos felizes que você escolheu deixar um comentário. Por favor, tenha em mente 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.

Checklist de Lançamento WordPress

O Checklist Definitivo para Lançamento de WordPress

Compilamos todos os itens essenciais da lista de verificação para o lançamento do seu próximo site WordPress em um e-book prático.
Sim, envie-me o eBook Gratuito!