Você deseja exibir uma lista de posts relacionados em seu site WordPress e prefere usar código em vez de um plugin?
No WPBeginner, frequentemente enfatizamos a importância de engajar seu público e mantê-lo explorando seu conteúdo. Uma estratégia eficaz que vimos ser usada em inúmeros sites WordPress de sucesso é a exibição de posts relacionados.
Quando os visitantes do seu blog terminam de ler um artigo de seu interesse, oferecer uma lista de posts relacionados os manterá engajados e os ajudará a encontrar novo conteúdo para ler.
Neste artigo, mostraremos como exibir posts relacionados no WordPress usando código, sem a necessidade de plugin.

Por que Exibir Posts Relacionados no WordPress?
Quando seu blog WordPress começa a crescer, pode se tornar mais difícil para os usuários encontrarem outros posts sobre o mesmo tópico.
Exibir uma lista de conteúdo relacionado no final de cada postagem do blog é uma ótima maneira de manter seus visitantes em seu site e aumentar as visualizações de página. Também ajuda a melhorar a visibilidade de suas páginas mais importantes, exibindo seu melhor conteúdo onde as pessoas podem encontrá-lo facilmente.
Se você não está familiarizado com código, então achará mais simples escolher um dos muitos plugins de posts relacionados para WordPress que podem exibir posts relacionados sem código.
Mas, se você já se perguntou se pode exibir posts relacionados sem usar um plugin, compartilharemos dois algoritmos diferentes que você pode usar para gerar posts relacionados com miniaturas usando apenas código:
- Método 1: Como Mostrar Posts Relacionados no WordPress por Tags
- Método 2: Como Mostrar Posts Relacionados no WordPress por Categoria
- Guias de Especialistas sobre Posts Relacionados no WordPress
Observação: Se você deseja mostrar uma miniatura com cada post relacionado, certifique-se de primeiro adicionar uma imagem em destaque a esses posts.
Método 1: Como Mostrar Posts Relacionados no WordPress por Tags
Uma maneira eficiente de localizar conteúdo relacionado é procurar outros posts que compartilham as mesmas tags. Tags são frequentemente usadas para focar nos detalhes específicos contidos em um post.
Com isso em mente, você pode querer adicionar algumas tags comuns aos posts que deseja relacionar. Você pode inseri-las na caixa 'Tags' no editor do WordPress.

Depois de adicionar tags aos seus posts, a próxima coisa a fazer é adicionar o seguinte trecho de código ao template single.php do seu tema.
Se precisar de ajuda para adicionar código ao seu site, consulte nosso guia sobre como colar snippets da web no WordPress.
$orig_post = $post;
global $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=>5, // Number of related posts that will be shown.
'ignore_sticky_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="relatedposts"><h3>Related Posts</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li><div class="relatedthumb"><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_post_thumbnail(); ?--></a></div>
<div class="relatedcontent">
<h3><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_title(); ?--></a></h3>
<!--?php the_time('M j, Y') ?-->
</div>
</li>
<!--?php }
echo '</ul--></ul></div>';
}
}
$post = $orig_post;
wp_reset_query();
Este código procura tags associadas a uma página e, em seguida, executa uma consulta ao banco de dados para buscar páginas com tags semelhantes.
Onde você deve colocar o código? Isso depende do seu tema, mas na maioria dos casos, você poderá colar o código no template single.php do seu tema, após a postagem principal e logo acima da seção de comentários.
Se você estiver usando o tema Twenty Twenty-One, como estamos em nosso site de demonstração, um bom lugar para colar o código é no arquivo template-parts/content/content-single.php, após o cabeçalho e logo após <?php the_content();.

Isso exibirá automaticamente conteúdo relacionado em qualquer postagem do WordPress.
Você precisará alterar o estilo e a aparência de suas postagens relacionadas para que correspondam ao seu tema, adicionando CSS personalizado.

Dica: Em vez de editar os arquivos do seu tema, o que pode quebrar seu site, recomendamos o uso de um plugin de snippets de código como o WPCode.
O WPCode torna seguro e fácil adicionar código personalizado no WordPress. Além disso, ele vem com opções de 'Inserção' que permitem inserir e executar automaticamente snippets em locais específicos do seu site WordPress, como após uma postagem.

Para mais detalhes, veja nosso guia sobre como adicionar código personalizado no WordPress. Você também pode conferir nossa análise detalhada do WPCode para saber mais sobre o plugin.
Método 2: Como Mostrar Posts Relacionados no WordPress por Categoria
Outra forma de exibir conteúdo relacionado é listar postagens que estão na mesma categoria. A vantagem desse método é que a lista de postagens relacionadas quase nunca ficará em branco.
Assim como o Método 1, você precisa adicionar um snippet de código ao template single.php do seu tema ou em um plugin de snippets de código como o WPCode. Para mais detalhes, consulte o Método 1 e nosso guia sobre como adicionar código personalizado no WordPress.
$orig_post = $post;
global $post;
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=> 2, // Number of related posts that will be shown.
'ignore_sticky_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="related_posts"><h3>Related Posts</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post();?>
<li><div class="relatedthumb"><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_post_thumbnail(); ?--></a></div>
<div class="relatedcontent">
<h3><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_title(); ?--></a></h3>
<!--?php the_time('M j, Y') ?-->
</div>
</li>
<!--?php }
echo '</ul--></ul></div>';
}
}
$post = $orig_post;
wp_reset_query();
Agora você verá uma lista de conteúdo relacionado no final de cada postagem.
Se você quiser alterar a estilização e a aparência de suas páginas relacionadas, precisará adicionar CSS personalizado para combinar com seu tema.
Guias de Especialistas sobre Posts Relacionados no WordPress
Quer saber mais sobre como exibir posts relacionados no WordPress? Confira estes tutoriais úteis sobre posts relacionados:
- Como Exibir Posts Relacionados no WordPress (Passo a Passo)
- Como Exibir Posts Relacionados do Mesmo Autor no WordPress
- Como Exibir Posts Recentes no WordPress
- Como Exibir Posts Recentes de uma Categoria Específica no WordPress
- Como Adicionar Posts Relacionados Inline em Posts de Blog do WordPress
- Como Exibir Posts Aleatórios no WordPress
- Como Mostrar Páginas Relacionadas no WordPress
Esperamos que este tutorial tenha ajudado você a aprender como exibir posts relacionados com miniaturas no WordPress sem plugins. Você também pode querer aprender como rastrear visitantes em seu site WordPress, ou conferir nossa lista de 24 dicas para acelerar seu site.
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.


Abhijit Badgujar
Olá,
Eu tenho uma opção de ‘Post relacionado’ do meu tema do WordPress e já a estou usando. Exibi 6 posts após o conteúdo. O problema é que ele mostra apenas 3 posts relacionados e os próximos três podem ser vistos quando você desliza horizontalmente. Eu não quero essa opção, quero que o site exiba todos os 6 posts de uma vez. Você pode me dizer como fazer isso?
Gyuricza Laszlo
Olá,
Sua orientação foi incrível, mas como posso excluir uma categoria específica dos posts relacionados para não exibi-la?
Obrigado, desde já!
Atenciosamente,
LAszlo Gyuricza
WPBeginner Support
Você pode tentar um dos plugins de posts relacionados.
Admin
Tuta
Oi Syed. Como eu estilizo isso?
WPBeginner Support
Oi Tuta,
Você pode usar os seletores #relatedposts .relatedthumb e .relatedcontent no seu CSS para estilizar.
Admin
Dev Rathore
Como Exibir Lista de Todos os Posts em uma Página
Suraz
Como Mostrar Posts Relacionados em Duas Colunas Como aqui no WPBeginner??
Tom
Boa solução, mas não definitiva para minha exigência. Na verdade, o principal problema é que este código ordena os posts relacionados a partir dos mais recentes na mesma categoria ou tags. O resultado é que, quando você navega dentro de uma categoria/tag, você sempre exibirá os mesmos poucos posts mais recentes, limitando severamente os posts mais antigos do seu site. Essa é uma conclusão correta? Por favor, se você tentou, compartilhe sua opinião!
Joy
1. Após ‘caller_get_posts’=>1, coloque uma vírgula(,)
2. Aperte o botão Enter [próxima linha]
3. Adicione ‘orderby’=>’rand’
Pronto. Agora os posts relacionados serão exibidos aleatoriamente. Obrigado.
Zane DeVault
Este código funciona muito bem. Eu estava me perguntando se você poderia explicar o que esta parte do código faz?
$orig_post = $post;
global $post;
…
$post = $orig_post;
Acho que entendi o que o resto está fazendo, mas isso está me confundindo.
Obrigado por todo o seu ótimo conteúdo!
may nghe len
Deixe-me perguntar sobre os Posts Relacionados por Categoria publicados em locais públicos. obrigado
atiq
no tema padrão Twentyfifteen, onde devo inserir este código no arquivo single.php? Se eu inserir acima do endwhile;, ele mostra erro de sintaxe, 'endwhile' inesperado e se eu inserir abaixo do endwhile; mas acima do endif;, ele mostra erro de sintaxe, 'endif' inesperado
Alguma solução para isso?
Obrigado
Mohammad Kazemi
Você deve usar '<?php' e não '<?'
atiq
no tema padrão Twentyfifteen, onde devo inserir este código no arquivo single.php? Se eu inserir acima do enwhile;, ele mostra erro de sintaxe, 'endwhile' inesperado e se eu inserir abaixo do enwwile mas acima do endif;, ele mostra erro de sintaxe, 'endif' inesperado
Alguma solução para isso?
Obrigado
Marcel Tripoux
Oi! Ótimo post!
Existe alguma maneira de combinar as duas opções, a fim de chamar tags relacionadas apenas na categoria atual?
Bambang
meu layout do single.php :
//the_content bla bla bla código aqui
//Copiar colar código de Posts Relacionados por Tags aqui
//comments_template bla bla bla código aqui
——————————-
o resultado que obtive foi um erro:
Erro de análise: erro de sintaxe, inesperado ‘endwhile’ (T_ENDWHILE) em …
——————————-
após eu mudar " <? } " para " <?php } " funcionou,
just sugestion, maybe it better if you put complete php open tag
thanks
Alex
Funciona perfeitamente. Como excluir a tag definida de Posts Relacionados por Tags? Quero dizer, como mudar o código para que o algoritmo encontre outros posts com qualquer uma das tags (exceto a tag 595, por exemplo) que o post atual tenha e os liste.
Mohammad
Obrigado pelo ótimo código
Funciona muito bem, mas você não abordou nenhum código CSS para um visual mais bonito para esta seção. Você pode fazer isso? Sou novato em programação e tentei alguns códigos, mas eles não funcionaram. Em seus códigos há:
echo ‘Related Posts’;
mas em alguns códigos semelhantes que encontrei em outros recursos há:
e em CSS alguns códigos como este:
.relatedposts {
font-size: 12px;
width: 640px;
}
.relatedposts h3 {
font-size: 20px;
margin: 0 0 5px;
}
terão uma aparência agradável, mas não funcionou com o seu código.
Obrigado
Muthu
Caro colega, este é um erro que estou recebendo ao colar este código no arquivo single.php. Por favor, diga-me exatamente onde devo colar este código.
Erro de análise: erro de sintaxe, fim inesperado do arquivo em C:\xampp\htdocs\beingusefull\wp-content\themes\TechPlus\single.php na linha 78
Equipe WPBeginner
Isso dependerá do seu tema e modelo individuais. Você precisa adicionar a tag condicional após o início do loop do WordPress. Após esta linha:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>Jenny
Eu também recebi esse erro e este é o meu código atualizado:
ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
‘tag__in’ => $tag_ids,
‘post__not_in’ => array($post->ID),
‘posts_per_page’=>5, // Número de posts relacionados que serão exibidos.
‘caller_get_posts’=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) { ?>
Posts Relacionados
have_posts() ) : $my_query->the_post(); ?>
<a href="” rel=”bookmark” title=””>
<a href="” rel=”bookmark” title=””>
wiyono
Quando o post que compartilho no Facebook, a miniatura é obtida de posts relacionados, posso obter a miniatura da página principal? obrigado
Lacey Tech Solutions
Se você estiver usando o plugin Yoast’s WordPress SEO, você pode especificar a URL da miniatura na aba social da postagem. Se a aba social não for exibida, você precisará clicar no link Yoast SEO no menu de administração do WordPress e, em seguida, clicar em “Social”. Na página social, marque a opção “Add Open Graph meta data” e salve. Volte para sua postagem e você poderá especificar a imagem em miniatura que deseja usar quando a postagem for compartilhada. Se você não definir explicitamente a imagem da postagem, o usuário terá a opção de selecionar qualquer imagem que apareça na página, é por isso que as imagens de suas postagens recentes estão sendo puxadas quando você compartilha o link do artigo.
Gretchen Louise
Alguma ideia sobre qual seria a carga de banco de dados/servidor para um site auto-hospedado grande? Estou procurando uma alternativa para posts relacionados agora que o #nRelate não está mais disponível.
Equipe WPBeginner
Use a tag condicional if (is_single()) na primeira linha do código.
vipul
você pode me dizer onde e como?
Rachael
Isso não funciona no single.php para mim, pois os posts relacionados aparecem no final da página. Funciona com loop.php, mas então eles também aparecem na página inicial – alguma ideia de uma correção para que apareça apenas em posts individuais e não na página inicial?
kate // sempre com fome //
Olá, devo ser o único que não está fazendo isso corretamente. Meu tema suporta imagens em destaque, adicionei este código antes dos comentários dentro do arquivo single.php. Alguma dica de exatamente onde inserir o código?
Keyko Sakura
Todos os códigos que encontro nunca funcionam. Ou eles não mudam nada na minha página ou exibem uma mensagem de erro. Não sei mais o que fazer!
Mason Coulter
Existe uma maneira de adicionar paginação à consulta de posts relacionados? Não consigo fazer a paginação funcionar em uma consulta secundária dentro de single.php. Obrigado!
Tom K.
Olá, gostaria de perguntar se há uma maneira de fazer com que os posts relacionados sejam por categoria e tags em um só lugar? Obrigado.
Jonas
Meus thumbnails estão muito grandes, me ajudem. Como limitar os thumbnails dos posts relacionados?
WPBeginner Support
Você provavelmente precisa regenerar os thumbnails.
Admin
Jonathan
Existe uma maneira de escolher uma única categoria (vamos chamá-la de Marcas) e então exibir posts relacionados apenas afiliados às subcategorias de Marcas? Então, a hierarquia das categorias seria Marcas > JCPenny. Eu quero mostrar apenas posts relacionados para JCPenny. Mas, essa subcategoria pode ser diferente por post. Então, se um post usa uma subcategoria diferente, ele mostrará posts relacionados para essa subcategoria. Este código pode ser modificado para lidar com isso de alguma forma?
Jonathan
OH! Acho que entendi. Eu apenas adicionei 'parent' => 'o número do ID da categoria', aos argumentos e acho que isso resolveu.
Jonathan
wait… no, that didn’t work
Miro
Olá, obrigado pelo código, mas em vez de pegar a imagem destacada como miniatura, posso pegar a primeira imagem dos meus posts? Obrigado
WPBeginner Support
Isso parece uma ótima ideia de post, cobriremos em breve em um novo artigo. Obrigado pelo feedback.
Admin
Miro
Seria ótimo se vocês fizessem um post sobre isso. Muito obrigado e estarei esperando. Espero que possam postar uma notificação aqui assim que fizerem o post para sabermos.
Caleb
Ótimo post, obrigado! Eu gerencio um site que usa o WP mais como um CMS com um grande número de páginas em vez de posts. Posso fazer isso com páginas relacionadas em vez disso, para que ele pegue páginas relacionadas e não posts? Se sim, como devo proceder?
Thanks for the help
Muhammad Hadi Qureshi
Muito obrigado por este post útil
Phil Simon
Isso. É. Incrível. A WPEngine compreensivelmente não permite plugins de posts relacionados, exceto por algumas exceções. Eu tentei alguns e realmente não gostei deles. Joguei este código no single.php e pronto! Obrigado.
Lucas Bishop
Isso é bom, mas eu quero fazer isso com o título do post em vez de tags ou categoria. Alguma sugestão para isso, syed!!
Alexandros
Oi amigos, pequeno problema que me aparece: “Parse error: syntax error, unexpected ‘endwhile’ (T_ENDWHILE) in C:\xampp\htdocs\z1\wp-content\themes\mytheme\single.php on line 65” encontrar
Mas o quê..? Obrigado
WPBeginner Support
Tente colar o código abaixo do endwhile; no seu arquivo single.php.
Admin
Britt
Adoro este trecho de código, uso-o regularmente! Uma pergunta: existe alguma forma de excluir algumas tags no código?
Rakesh
Dê uma olhada no código de posts relacionados por categoria. Ele não funcionará a menos que você adicione algum php, as três letras antes de começar com echo. Adicione php e ele não será ignorado. Em qualquer caso, ele é ignorado e o wordpress chora toda vez com uma nota de erro. Obrigado pelo código, aliás, e ele tornou meu trabalho muito mais fácil. Muito obrigado por isso e ajuste-o,
Dennis
Além disso, tenho mais uma pergunta,
E se eu quisesse exibir um determinado post contendo uma determinada tag para todos os posts, como eu faria isso?
Dennis
Olá, isso é tão incrível! Agora posso me livrar do meu plugin de posts relacionados, então muito obrigado por isso!
Uma pergunta que tenho é, como posso exibir o post relacionado em 2 colunas?
Mais uma vez, isso tem sido uma GRANDE ajuda para mim!
Christina
Olá!! Obrigado pelas suas informações úteis para aqueles, como eu, que não entendem nada de codificação, mas ainda querem ter um blog!! Acabei de incorporar seu código de 'posts relacionados por tags' ao meu arquivo de post único. Funciona, exceto pelas fotos. Elas não aparecem e os títulos dos meus posts relacionados aparecem um embaixo do outro, como uma lista. O que fiz de errado?? Obrigado antecipadamente pela sua resposta!!
WPBeginner Support
Parece que você não está usando miniaturas de postagem ou imagens em destaque em suas postagens no WordPress. Você também pode precisar ajustar um pouco o CSS.
Admin
TheFran
Olá,
Este código é incrível! Muito obrigado. Existe alguma maneira de fazer o código mostrar posts relacionados de OUTRO SITE? Assim, ele busca os posts de outro site que eu mostro abaixo do post como um post relacionado no meu site?
Obrigado!
Equipe Editorial
Não usando este trecho. Você teria que criar algo mais complexo para isso.
Admin
Carlos
Olá,
Estou usando um tema que funciona com posts personalizados. Gostaria de saber se eu tentar o seu código, qual parte devo editar para exibir apenas esses posts personalizados em vez dos posts regulares.
Obrigado
Miz.Chellie
Olá – o seu é o primeiro tutorial que encontrei que funciona, mas eu gostaria que a lista fosse vertical. Você pode dar um exemplo do CSS para isso?
Livius
Olá,
Não consigo encontrar o single.php onde preciso inserir este código.
O problema é que estou usando o Balance Theme + Genesis. Então, no Genesis, consigo encontrar o Single.php, mas ele diz para "Não Editar Sob Nenhuma Circunstância", e eu realmente colei o código lá, mas fez com que meu site parasse de abrir páginas completamente.
E no Child Balance Theme, não há Single.php....
Alguma sugestão?
Equipe Editorial
Sim, não edite o arquivo do framework. Você teria que se familiarizar com os hooks e filtros do Genesis. Em seguida, adicione o código em um dos hooks de loop para a página única usando seu arquivo functions.php. Infelizmente, devido à quantidade de frameworks existentes, não podemos cobrir nossas dicas para todos os frameworks.
Admin
Mark
Use os Genesis Hooks e coloque o código lá.
peter
Olá, existe alguma maneira de alterar o tamanho da miniatura? Recebo apenas um post relacionado e sua miniatura é enorme.
Equipe Editorial
Sim. Você teria que adicionar tamanhos de imagem adicionais como este:
https://www.wpbeginner.com/wp-tutorials/how-to-create-additional-image-sizes-in-wordpress/
Admin
Dean
Olá! este é um código muito útil. É possível usar isso para criar uma página personalizada que mostrará todos os posts, como um sitemap, mas com miniaturas? Algo como isto:
Categoria 1
—– código de posts relacionados (todos os posts dessa categoria) ——
Categoria 2
—– código de posts relacionados (todos os posts dessa categoria) ——
etc. Seria uma ótima vitrine para categorias com poucos posts. Obrigado por ler e pela ajuda!
Dean
hey, found something here.. I will try that
Nuno Marques
Olá,
muito útil o seu “Posts Relacionados por Categoria”.
Às vezes, acredito que é melhor adicionar um código bruto em vez de usar um plugin que não é tão expansível...
Obrigado!
Silverbadger
É possível exibir os posts horizontalmente em vez de verticalmente?
Thanks
Equipe Editorial
Sim, você pode simplesmente ajustar o CSS.
Admin
Paul
Thank you thank you thank you!! A simple copy paste bit of code that just gets on with it and works – does exactly what it says. This is exactly what I was looking for
Equipe Editorial
Sim, você pode usar miniaturas de posts por si só. Não tenho certeza por que você gostaria do recurso de relacionados...
Admin
Raheek
Obrigado pelo artigo útil. Agora, acabei de adicionar posts relacionados usando este código.
Ferdy
E se não houver posts relacionados? Pode ser codificado de forma que volte para posts relacionados por categoria?
tobalseverin
oi!
preciso de ajuda…
Como posso filtrar.. a categoria, mas se eu tiver categorias pai e filho e eu mostrar apenas o post filho. ex:
– produto (todos os produtos, este é o pai) (id 104)
– TipoDeProdutos (subcategoria, este é o filho) (id 109)
– TipoDeProdutosDois (subcategoria, este é o filho) (id 110)
em produtos tem todos os posts, mas só preciso mostrar os relacionados do filho: TipoDeProdutos.
eu tentei com isto:
$args = array(
‘category__in’ => $category_ids,
‘category__not_in’ => 104,
‘post__not_in’ => array($post->ID),
‘orderby’=> ‘rand’,
‘showposts’ => 100,
‘ignore_sticky_posts’ => 1
);
mas não mostra nada…
e eu tentei com este outro:
$args = array(
‘category__in’ => $category_ids,
‘child_of’ => 104,
‘post__not_in’ => array($post->ID),
‘orderby’=> ‘rand’,
‘showposts’ => 100,
‘ignore_sticky_posts’ => 1
);
e nada
ajuda? obrigado!