Seu blog WordPress provavelmente tem dezenas de ótimos posts antigos, mas os novos visitantes veem apenas os seus mais recentes, enquanto todo o resto permanece enterrado em seus arquivos.
Exibir posts aleatórios é uma maneira fácil de corrigir isso. Cada carregamento de página exibe conteúdo diferente, o que dá aos posts antigos uma nova exposição e mantém os visitantes clicando em seu site por mais tempo. Você pode até adicionar um botão "Post Aleatório" que permite aos leitores pular para um artigo surpresa, no estilo clássico do StumbleUpon.
Neste tutorial, mostraremos como exibir posts aleatórios no WordPress, além de como redirecionar visitantes para um post aleatório com um único link.

Simplesmente use os links rápidos abaixo para pular para o método que você deseja usar:
Como Exibir Posts Aleatórios no WordPress
Procurando uma maneira divertida de manter os visitantes clicando em seu site? Você pode facilmente adicionar uma lista de artigos aleatórios diretamente na sua barra lateral, páginas ou diretamente dentro dos seus posts de blog.
Embora alguns tutoriais possam sugerir adicionar código personalizado ao arquivo functions.php do seu tema, recomendamos o uso do WPCode, o plugin gratuito de snippets de código para WordPress.
O WPCode vem com validação inteligente de snippets de código para evitar que erros comuns de código quebrem seu site. Ele também torna suas personalizações à prova de futuro, o que significa que você pode atualizar ou mudar para um tema diferente sem se preocupar em perder todas as funções de código personalizado.
Primeiro, você precisa instalar e ativar o plugin gratuito WPCode. Para instruções detalhadas, consulte nosso guia para iniciantes sobre como instalar um plugin do WordPress.
Após a ativação do plugin, vá para a página Snippets de Código » + Adicionar Snippet na barra lateral de administração do WordPress.
Uma vez lá, clique no botão ' + Adicionar Snippet Personalizado' em 'Adicionar Seu Código Personalizado (Novo Snippet)'.

Em seguida, selecione ‘Snippet PHP’ como o tipo de código.
Você será então levado para a página ‘Criar Snippet Personalizado’, onde pode começar digitando um nome para o snippet de código.
Este título é apenas para sua referência e não aparecerá em nenhum lugar do seu site.

Em seguida, basta copiar e colar o seguinte código na caixa ‘Pré-visualização do Código’:
<?php
$number_of_posts = 5; // Change this to the number of random posts you want to display.
$title = 'You might also like:'; // This is the title that will be displayed above the list of posts.
$current_post_id = get_the_ID();
$args = array(
'post_type' => 'post',
'orderby' => 'rand',
'posts_per_page' => $number_of_posts,
'post__not_in' => array( $current_post_id ),
);
$random_posts = new WP_Query( $args );
if ( $random_posts->have_posts() ) {
echo '<h3>' . esc_html( $title ) . '</h3>';
echo '<ul>';
while ( $random_posts->have_posts() ) {
$random_posts->the_post();
echo '<li><a href="' . esc_url( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a></li>';
}
echo '</ul>';
}
wp_reset_postdata();
Este snippet exibe 5 posts aleatórios onde quer que você coloque seu shortcode, e ele automaticamente exclui o post que o visitante já está lendo.
Para mostrar um número diferente, altere o valor de $number_of_posts no topo do snippet. A linha $title controla o cabeçalho 'Você também pode gostar:' que aparece acima da lista, então edite esse texto ou defina-o como '' se preferir não ter um cabeçalho.
Depois disso, você precisará salvar o snippet para gerar um shortcode exclusivo, então clique no botão 'Salvar Snippet'.

Depois disso, role até a seção 'Inserção' e escolha a opção 'Shortcode'.
Você verá agora o shortcode que o WPCode gerou automaticamente. Clique no botão ‘Copiar’, pois você usará este shortcode na próxima etapa.

Finalmente, role de volta para o topo e mude o interruptor ‘Inativo’ para ‘Ativo’.
Depois disso, basta clicar no botão ‘Atualizar’ para salvar suas alterações.

Após salvar o snippet de código, você pode exibir posts aleatórios em seu site usando o shortcode que copiamos anteriormente.

Para mais detalhes sobre como fazer isso, veja nosso guia sobre como adicionar shortcodes do WordPress.
Se os mesmos posts aleatórios continuarem aparecendo em vez de mudar, geralmente é o cache da sua página que está servindo uma cópia salva da página. Comece limpando seu cache e recarregando a página.
Se eles ainda não mudarem, exclua essa página do cache de página inteira do seu plugin de cache.
Como Redirecionar Usuários para um Post Aleatório (Com um Plugin)
Embora exibir uma lista de posts aleatórios funcione muito bem na sua barra lateral ou no final de um artigo, ainda assim exige que os visitantes escaneiem os títulos e escolham um. Nos primórdios da web, gostávamos muito de usar o Stumbleupon, que facilitava a descoberta de novos conteúdos com um clique.
Você pode adicionar uma funcionalidade semelhante em seu site, onde, em vez de exibir uma lista, você cria um botão ‘Post Aleatório’ ou um link ‘Surpreenda-me’ que leva instantaneamente os visitantes a um artigo aleatório em seu site. É uma maneira divertida de incentivar a exploração e funciona especialmente bem na sua página 404 ou no seu menu de navegação.
Recomendamos o uso do Random Post Plugin gratuito. Ele funciona adicionando um parâmetro de URL ?redirect_to=random ao seu site.
Simplesmente instale e ative o plugin, depois adicione um link ao seu menu de navegação, widget de barra lateral, botão ou em qualquer outro lugar do seu site. Um visitante poderá então clicar nele para visitar um post aleatório.
Para construir seu próprio link, você precisará substituir www.example.com pelo nome do seu próprio domínio.
Aqui estão as variações que você pode usar:
- www.example.com/?redirect_to=random&each_once=rewind. Garante que os visitantes não vejam o mesmo post duas vezes. Este link é automaticamente redefinido assim que eles veem todos os posts do seu site.
- www.example.com/?redirect_to=random&count=10. Exibe apenas posts aleatórios dos seus 10 artigos publicados mais recentemente.
- www.example.com/?redirect_to=random&after=1 month ago. Exibe apenas posts aleatórios que foram publicados no último mês.
- &cache=120. Adicione isso ao final do seu URL para salvar (cache) temporariamente o resultado por 120 segundos. Isso ajuda seu site WordPress a carregar mais rápido.
Por exemplo, você pode criar um botão que exibe um post aleatório, selecionado entre seus 20 posts mais recentes:

Se você prefere um botão ‘Post Aleatório’ pronto, o plugin também inclui um shortcode útil.
Você pode facilmente adicionar o shortcode [redirect_to_post_button] a qualquer post, página ou área de widget. Se precisar de ajuda, confira nosso guia para iniciantes sobre como adicionar um shortcode no WordPress.

Como Redirecionar Usuários para um Post Aleatório no WordPress (Com Código)
Se você preferir não instalar outro plugin de propósito único, pode configurar o mesmo redirecionamento de ‘Post Aleatório’ com um snippet de código.
Este trecho cria um URL totalmente novo em seu site, que se parecerá com exemplo.com/aleatorio.
Isso não afetará nenhuma de suas páginas existentes e não prejudicará os leitores que estão navegando em seus posts. O redirecionamento só acontece quando alguém visita manualmente esse novo endereço /aleatorio, como quando clica em um botão ou link de menu 'Post Aleatório' que você configurou.
Portanto, sempre que um leitor visitar exemplo.com/aleatorio, o WordPress selecionará automaticamente um de seus posts publicados de forma totalmente aleatória e o redirecionará diretamente para ele.
Para manter seu site seguro, adicionaremos o código usando o plugin WPCode que configuramos anteriormente. Isso garante que um único caractere digitado incorretamente não quebre seu site ou o bloqueie da sua área de administração.
Você pode simplesmente colá-lo como um novo trecho de PHP no WPCode, seguindo os mesmos passos que cobrimos anteriormente:
<?php
function wpb_random_post_rewrite() {
add_rewrite_rule( '^random/?$', 'index.php?random_redirect=1', 'top' );
}
add_action( 'init', 'wpb_random_post_rewrite' );
function wpb_random_post_query_var( $vars ) {
$vars[] = 'random_redirect';
return $vars;
}
add_filter( 'query_vars', 'wpb_random_post_query_var' );
function wpb_do_random_post_redirect() {
if ( get_query_var( 'random_redirect' ) ) {
$random = get_posts( array(
'post_type' => 'post',
'orderby' => 'rand',
'posts_per_page' => 1,
) );
if ( $random ) {
wp_redirect( get_permalink( $random[0]->ID ), 307 );
exit;
}
}
}
add_action( 'template_redirect', 'wpb_do_random_post_redirect' );
Você pode ter notado que este trecho usa um redirecionamento 307, que informa ao navegador que o destino é temporário.
Isso ocorre porque os navegadores da web armazenam em cache redirecionamentos 301 permanentes para acelerar os tempos de carregamento. Como resultado, o navegador continuaria enviando um visitante para o mesmo post, quebrando completamente a aleatoriedade.
Depois de salvar e ativar o trecho, basta ir para Configurações » Links Permanentes no seu painel do WordPress e clicar no botão ‘Salvar Alterações’.
Este passo rápido é conhecido como ‘limpar seus links permanentes’. Ele força o WordPress a atualizar a estrutura de seus links para que ele possa reconhecer instantaneamente seu novo URL /aleatorio.
Se você estiver usando um plugin de cache do WordPress para acelerar seu site, certifique-se de adicionar /aleatorio à sua lista de URLs excluídos. Isso garante que o redirecionamento seja executado de forma nova a cada vez, em vez de servir uma página em cache para seus visitantes.
Seu redirecionamento aleatório está pronto para uso. Você pode apontar qualquer link para exemplo.com/aleatorio, seja um botão, um item de menu de navegação, um widget de barra lateral ou um link de texto dentro de um post.
Apenas lembre-se de substituir exemplo.com pelo nome do seu próprio domínio.
Esperamos que este artigo tenha ajudado você a aprender como exibir posts aleatórios no WordPress. Você também pode conferir nosso guia para iniciantes sobre como reordenar facilmente posts no WordPress e nosso tutorial sobre como criar um post privado no WordPress.
Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.


Dayo Olobayo
Já tentei vários métodos para exibir posts aleatórios, mas nenhum deles funcionou tão bem quanto este método de consulta personalizada. Este tutorial é fácil de entender e adorei como você forneceu exemplos e trechos de código para ajudar a ilustrar o processo. Sua experiência me poupou muito tempo e frustração. Continue compartilhando seu conhecimento conosco!
Jiří Vaněk
Pelo que entendi, o código não inclui imagens destacadas dos posts. Existe alguma opção com código para exibir posts com imagens destacadas também?
WPBeginner Support
Talvez você queira dar uma olhada nos posts mais recentes do blog no editor de blocos para isso.
Admin
Jiří Vaněk
Obrigado pelo conselho. Sim, isso funciona para mim. Eu uso Elementor e ocasionalmente Seed Prod. Como nunca uso o Gutenberg, essa opção nunca me ocorreu. Eu simplesmente não sabia que o Gutenberg tinha esse bloco. Obrigado pela dica.
Chris Smith
Meus posts fixos sempre aparecem nos meus posts aleatórios. Existe alguma maneira de excluir posts fixos deste código?
WPBeginner Support
Para conseguir isso, recomendamos usar o plugin do segundo método em vez de ajustar o código.
Admin
Michael
Existe uma maneira fácil de armazenar em cache os resultados por um certo período de tempo em vez de randomizar toda vez? Talvez atualizar uma vez a cada 24 horas para reduzir a carga nas chamadas do banco de dados a cada vez?
WPBeginner Support
Para essa funcionalidade, você precisaria verificar com o suporte do plugin se ela está disponível.
Admin
Marvin Duru
Por favor, tentei adicionar o shortcode em uma posição específica do meu site, não dentro do post em PHP, mas a seção de posts aleatórios não foi exibida, apenas mostrou meu texto “[wpb-random-posts]”.
O que devo fazer?
WPBeginner Support
Ao usar o editor de blocos, você deve garantir que está adicionando-o usando um bloco de shortcode.
Admin
Zeynep
Obrigado, o código funciona perfeitamente. Mudei a primeira página do meu site WordPress para index.html, o que preciso para executar [wpb-random-posts] na minha página HTML? Meu inglês é um pouco fraco, espero que você me entenda.
WPBeginner Support
Você precisaria que a página fosse uma página do WordPress para que um shortcode do WordPress funcionasse.
Admin
Elle
Como você faria para estilizar isso? Estou confuso sobre como controlar o design disso, nunca trabalhei com estilização em PHP.
WPBeginner Support
Dependeria do estilo que você deseja adicionar para o que precisa ser feito. Você pode adicionar uma classe no código HTML para ter algo para direcionar.
Admin
Maria Cristhiane Amorim
Olá! Posso fazer isso em uma listagem?
WPBeginner Support
Você precisaria esclarecer o que quer dizer com isso
Admin
Rob Packenham
Obrigado pelo artigo útil.
Tenho uma pergunta — as páginas do meu site WordPress incluem uma barra lateral com um widget de post aleatório (excertos).
Um problema é que o Google indexa as páginas e 'vê' os excertos de posts aleatórios como conteúdo para a página. Portanto, na pesquisa do Google, uma página pode aparecer como correspondente a um termo de pesquisa apenas porque um dos excertos de posts aleatórios na página correspondeu ao termo (não o conteúdo principal da página).
Mas, quando um usuário clica no link nos resultados da pesquisa do Google, ele verá a página com um conjunto diferente de excertos de posts aleatórios na barra lateral — não o excerto de post com o texto correspondente. Portanto, parece para eles uma má pesquisa.
Idealmente, eu gostaria de excluir os trechos aleatórios de posts do índice do Google, ou seja, escondê-los do Google, mas isso não parece possível (?).
Se você tiver alguma sugestão, eu agradeceria! Obrigado.
Jun Enriquez
Tentei isto e destruiu meu site, como faço para redefinir isso?
Erro HTTP 500
Por favor, ajude
Obrigado
Jun
Yin
Muito obrigado por compartilhar isso. Usei outro plugin para posts aleatórios que não funciona mais. Então encontrei seu site e instalei o plugin. Funciona perfeitamente.
Lisa
Olá, e obrigado por este tutorial útil!
Você pode me dizer qual seria o trecho de código para adicionar para exibir posts aleatórios que estão em uma categoria específica? Meu tema não exibe uma barra lateral, então não posso usar o plugin e ele já tem uma exibição de posts aleatórios sob cada artigo, mas posts de todas as categorias são incluídos e exibidos então. Tentei verificar o código do tema e adicionar 'post_category' => 'nome-da-categoria', mas não funciona. Alguma ideia?
Raff
Olá! Só queria perguntar o que acontece se eu quiser mudar o post aleatório toda semana ou em qualquer momento. Por exemplo, exibo um conjunto de posts aleatórios, ele não mudará até 7 dias ou em qualquer momento. Obrigado!
Abhimanyu Kashyap
Muito obrigado, consegui exibir posts aleatórios. Mudei o número de posts para 1 para exibir 1 post aleatório. Existe uma maneira melhor de fazer isso?
Eu também gostaria de saber como posso usar uma variável em vez de tipo de post e inserir uma onde coloco o shortcode, por exemplo – [wpb-random-posts('post')].
Como posso conseguir isso??
devender
obrigado por compartilhar este código, é muito útil……..
Nate
Definir posts para orderly => ‘rand’ é uma medida paliativa. Claro, o post é exibido ‘aleatoriamente’, mas como DI SEKITAR mencionou acima, qual o uso de exibir um post aleatório se ele será o mesmo post aleatório toda vez que alguém visitar o site?
Nate
Queria dizer ‘orderby’… Fui corrigido
smehsan
Desculpe, mas a string não estava funcionando e eu apenas a tornei global e agora funciona bem.
global $string;
Marléne Rose Shaw
Obrigado por este ótimo tutorial. Existe alguma maneira de eu obter o shortcode e depois exibir as postagens aleatórias abaixo do conteúdo em uma página em vez da barra lateral??
Katherine
JAYKAY
Para excluir a postagem atual, adicione
‘post__not_in’ => array(get_the_id())
à consulta.
Então seus argumentos agora serão:
$args = array( 'post_type' => 'post', 'orderby' => 'rand', 'posts_per_page' => 5, 'post__not_in' => array(get_the_id()), );
JAYKAY
Funciona bem com este trecho de código.
Obrigado KATHERINE
di sekitar
informação muito legal,
Eu tentei usar o plugin que você mencionou, mas tenho uma grande dúvida.
Como fazer com que os posts aleatórios sejam diferentes para cada visitante ou dispositivo que acessa meu site?
porque tentei acessar meu site usando outro notebook e smartphone, mas os posts aleatórios desses 2 dispositivos são os mesmos.
JayKay
Olá,
O Advanced Random Posts Widget é um plugin muito bom, mas tenho um problema.
Como você poderia excluir a postagem atual/ativa ao exibir uma postagem aleatória?
É possível corrigir isso?
O problema é o mesmo com o código do método 2.
Harry Stoddart
Use a variável “Offset” para pular os últimos X posts.
Khalil Sillah
Como iniciante, que lista de materiais eu precisaria para aprender WordPress?
Ahm Clex
Um PC, Wi-Fi e dedicação. É tudo o que você precisa para aprender qualquer coisa hoje em dia.
Gaurav Khurana
obrigado por isso. eu sempre estava pensando sobre isso, já que por padrão os posts mais recentes ficam visíveis na página inicial. Obrigado por isso, definitivamente usarei este plugin