Dependendo do design que pretendemos aplicar em nossos projetos web, a utilização de plugins pode engessar a personalização de exibição de alguns elementos do site. Isso pode afetar a experiência do usuário com a apresentação de um layout inconsistente.
Deve-se lembrar também, que, quanto mais plugins utilizamos em nossos projetos WordPress, maior será o tempo de carregamento do site, pois, muitas vezes, cada um desses plugins possuem seus próprios arquivos de estilos e seus scripts.
Nossa solução
Na solução que apresentaremos, iremos criar filtros para identificar as tags e categorias do post que está sendo exibido e iremos validar se há posts relacionados antes de exibir a seção.
Assim, se um determinado post não tiver posts relacionados a ele para ser exibido, não exibiremos a seção inteira, mantendo o layout mais limpo e coerente.
Também iremos adicionar a exibição de thumbnail do post.
Em nosso exemplo, iremos editar o arquivo single.php ou single-post.php do projeto, adicionando uma seção que irá mostrar os posts relacionados logo após a exibição do post da página. Você pode modificar a nossa solução para a exibição dos posts no arquivo sidebar.php também.
Vamos ao código
<?php $args = array( 'post_type' => 'post', // selecionando o tipo de post desejado 'showposts' => '3', //limitando o numero de posts a serem exibidos 'category__in' => wp_get_post_categories(get_the_ID(), array('fields' => 'ids')), //buscando por categorias do post atual 'tag__in' => wp_get_post_tags(get_the_ID(), array('fields' => 'ids')), //buscando por tags do post atual 'post__not_in' => array(get_the_ID()), // excluindo o post atual das buscas. 'order' => 'rand', // definindo a ordem de exibição randomica para o post ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : ?> <section > <header> <h2>Conteúdos Relacionados</h2> </header> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <article <?php post_class("post_item"); ?> id="post_item-<?= $post->ID; ?>"> <?php if (has_post_thumbnail()): the_post_thumbnail('post-thumbnail', ['class' => 'post_image']); endif; ?> <header> <h3><?= get_the_title(); ?></h3> <?php the_excerpt(); ?> </header> <a href="<?= get_permalink(); ?>" title="<?= get_the_title(); ?>">Saiba Mais</a> </article> <?php endwhile; ?> </section> <?php endif; wp_reset_query(); wp_reset_postdata(); ?>
Uma observação importante…
A solução apresentada mostra posts que são realmente relacionados, sendo altamente relevante para leitores do site, pois irá considerar tanto as categorias como as tags. Se algum desses critérios não for satisfeito ele não exibirá os posts.
O que você achou deste tutorial? Foi útil para você?
Se tiver alguma dúvida ou se deseja sugerir alguma mudança, deixe nos comentários.