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.
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
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.
exatamente o que eu estava procurando, obrigado!!
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?
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?
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?
OBRIGADO!!
MUITO OBRIGADO!!! VOCÊ ME AJUDOU MUITO!!!
Fico feliz que o trecho tenha sido útil
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.
Muito obrigado. Eu estava procurando por um código como este para compartilhar mais artigos com o leitor no final do meu site.