...
✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Tutorial de Tema WordPress para Iniciantes – Parte 12: Consulta de postagem personalizada

7

Nesta lição final, aprendemos como escrever sua própria consulta de postagens e fazer um loop por elas sem interromper o loop pai no modelo. Faremos uma parte de modelo para postagens únicas que mostre postagens relacionadas na mesma categoria.

O que faremos nesta lição é uma consulta de postagens relacionadas em nossa visualização de postagem única, mostrando no máximo 3 postagens, do tipo postagem, na mesma categoria ou categorias da postagem em que estamos, exclua a postagem atual em si, e randomize os posts mostrados. Também veremos estratégias para não atrapalhar o loop aninhado.

Modelo de postagens relacionadas

Vamos fazer das postagens relacionadas uma parte do modelo, sobre a qual aprendemos na parte 10. Dessa forma, não complicamos demais single.phpe tornamos nosso código mais reutilizável. Coloque o pedido desta nova peça de modelo onde desejar. Vou colocá-lo logo antes de solicitar o modelo de comentários:

Agora, vamos criar um novo arquivo vazio em nossa pasta de temas e nomeá-lo related-posts.php. Com este arquivo, estamos prontos para mergulhar na criação de uma consulta de postagem personalizada.

Consulta de postagem personalizada

Se você quiser fazer uma consulta personalizada de posts, tem algumas opções, mas recomendo se acostumar com a classe WP_Query. Marque esta página de documentação como favorita, pois você a consultará com frequência, pois há muitas opções. Mostrarei um exemplo prático de como configurar uma consulta consultando a documentação de cada especificação que desejamos adicionar.

Se você quiser saber mais sobre como consultar posts, eu tenho um post que detalha exatamente isso.

Para fazer uma pós-consulta personalizada, chamaremos new WP_Query(), passaremos um array de argumentos para ela e armazenaremos seu resultado em uma variável. E então usaremos exatamente o mesmo loop que usamos antes em nossos modelos (dê uma olhada no loop original aqui para comparar). Mas precisamos dizer ao loop para passar pela variável, em vez da global (que é o post único).

É assim que o loop ficará ao adicioná-lo a uma consulta personalizada:

Como você pode ver, o loop é exatamente o mesmo, usando have_postsand the_post. A diferença é que nós os chamamos para o $related_postsobjeto. Se pularmos a $related_postsparte, o WordPress automaticamente assume que é a consulta global de postagens.

Você também pode notar a chamada da função wp_reset_postdata()logo após o loop. É assim que "limpamos depois de nós mesmos" depois de uma consulta personalizada com WP_Query. Lembre-se que the_post()configura o objeto global post para que possamos usar the_title()etc. E como já estamos dentro de um loop (o de single.php), precisamos ter certeza nós limpamos e redefinimos a postagem de volta para a postagem única depois de terminarmos. Se não redefinirmos os postdata, qualquer coisa depois disso se referirá à última postagem relacionada que passamos. Isso pode ser um grande problema! Em nosso exemplo, tem um modelo de comentários que segue isso. Deixar de fora a redefinição fará com que o modelo de comentário mostre comentários do último post relacionado no loop. E não o único post que estamos vendo!

Implementando nosso loop personalizado

Tudo bem, vamos começar a implementar o loop personalizado em nosso related-posts.php. Eu adicionei um wrapper e um título, mas como de costume você pode ajustar o HTML como desejar:

Agora veremos o poder da reutilização nas partes do modelo. Digamos que dentro desse loop personalizado queremos mostrar exatamente o mesmo conteúdo que fazemos em nosso content-loop.php, que usamos em nossos modelos de arquivo. Tudo o que precisamos fazer é solicitar essa parte do modelo dentro de nosso loop personalizado, se estamos prontos para lidar com a saída de cada postagem!

Agora tudo o que resta é adicionar os argumentos à nossa consulta de postagem, certificando-se de buscar o que queremos. Vamos analisar os argumentos um por um.

Criando os argumentos para nossa consulta de postagem personalizada

Não queremos buscar mais posts do que 3. Na documentação (seção “Parâmetros de paginação") o argumento para isso é posts_per_page. Então adicionamos o elemento array:

Queremos garantir que o WordPress busque posts, e não páginas ou qualquer outra coisa. Em “Parâmetros de tipo de postagem” encontramos:

Queremos evitar que a única postagem em que estamos apareça em nossa consulta de postagens relacionadas, porque isso não faz sentido, certo? A documentação nos diz em “Parâmetros de postagem e página” que podemos adicionar o ID da postagem em uma matriz para post__not_in:

Também queremos randomizar as postagens; porque, por padrão, ele buscará as últimas postagens publicadas e isso pode rapidamente se tornar bastante repetitivo à medida que você passa pelas postagens. Felizmente o WordPress tem uma função para isso na forma como ordena os posts; em “Ordenar e ordenar por parâmetros” encontramos:

Por fim, queremos consultar postagens que estejam dentro das mesmas categorias da postagem em que estamos. Para fazer isso, precisamos primeiro, antes dos argumentos da consulta, obter as categorias para o único post em que estamos. Em “Parâmetros de categoria” vemos que podemos fornecer uma matriz de IDs de categoria para category__in. Felizmente, o WordPress tem uma função para obter IDs de categoria para um post; wp_get_post_categories()que podemos usar diretamente como valor para o parâmetro. Perfeito!

Aqui está a consulta final e seus argumentos:

Atualize e você verá 3 postagens listadas na parte inferior da visualização única. Atualize várias vezes para ver que eles mudam porque dissemos ao WordPress para randomizá-los. Nota: Se você tiver menos de 3 postagens na mesma categoria, receberá menos de 3 postagens.

É isso! Agora você sabe como consultar as postagens que desejar. A página de documentação WP_Query é extremamente útil para ajustar sua consulta, porque há possibilidades realmente ilimitadas aqui. Eu encorajo você a brincar com os parâmetros e talvez tentar fazer uma parte de modelo separada para usar em posts relacionados.

Fonte de gravação: awhitepixel.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação