Criar listagem de post por bloco de categoria - Ninja WP - CHR Designer
Posted in 22 de March de 2016 by César Ribeiro.
Olá pessoal, hoje eu venho aqui para mostrar para vocês como Listar Posts em Grupos filtrados por Categorias, as vezes quando a demanda de post's do site são poucas ou mesmo por uma necessidade específica do propria cliente, esse formato de listagem é a melhor opção.
Então por causa dessas necessidades eu desenvolvi um loop personalizado, vocês podem aplicar essa mesma aplicação para a categoria padrão do proprio WordPress ou utilizar para uma taxonomia personalizada.
Para esse modelo, eu tive que utilizar duas fuções padrões do proprio WordPress para realizar essas verificações, que são: get_object_taxonomies() e get_terms().
Abaixo, eu vou deixar o modelo que eu desenvolvi e que vamos utilizar nesse tutorial:
Agora eu vou detalhar para você, o que foi feito em cada linha, para simplificar para vocês:
De início eu criei um variável chamada $post_type aplicando o valor 'post', eu apliquei dessa maneira somente para simplificar nesse tutorial, assim ficará mais fácil a visualização do mesmo.
Dentro do meu primeiro foreach eu vou determinar os primeiros parâmetros para o get_terms(), que vão ser os valores que estão vindo da nossa função get_object_taxonomies().
A forma de ordenação orderby e order eu dexei listando de forma Ascendente e por Nome, também declarei que o "hide_empty = 1" isso significa que vai listar somente categorias com post's cadastrados, porque se eu passar o valor "hide_empty = 0" ele vai listar todas as categorias, até mesmo as que estão "vazias".
"Para mais especificações é só acessar o link que eu aplique nas funções."
Agora já com os termos da categoria/taxonomia estão declaradas, vamos para a parte do loop dos posts. Mas antes, como vocês podem ver eu que apliquei outro um foreach, ele vai ser o responsável pela criação dos grupos(blocos).
Vamos criar os argumentos da nossa Array para a criação do WP_Query, dentro dela vamos aplicar nossa variável $post_type que contém o valor "post" e a quantidade desejada de posts que vão ser exibidos dentro de cada grupo.
Eu apliquei o valor "posts_per_page => -1" isso significa que ele vai listar todos os posts cadastrados dentro categoria, mas para fixar um outro valor desejado é só alterar o mesmo: Exemplo "posts_per_page => 6".
Essa é a mais importante aonde iremos aplicar os argumentos dentro de "tax_query", ela a responsável pela "filtragem" dos posts+categoria. Eu estou pegando o valor de $taxonomy e comparando o slug da minha categoria se é a mesma e assim aplicando dentro do meu grupo correto.
Pronto!!! Agora estamos quase finalizando o nosso processo, então vamos para a parte final do tutorial, que é a criação do nosso loop que vai gerar nossos post's.
Abaixo, eu deixei um loop bem básico para facilitar, mas essa parte é totalmente personalizada para cada necessidade, aqui eu vou somente criar um grupo com alguns conteúdos.
Legenda de cada parte do loop:
DL – ID padrão box-loop-list- junto com a string $term->slug; assim no frontend ficará mais simples a visualização e também a aplicação de algum estilo personalizado que você desejar;
DT – Apliquei uma tag H3 junto com a string $term->name; para que o nome da categoria fique sempre acima do bloco de post's;
DD – Fiz uma verificação se existe ou não um thumbnail cadastrado no meu post e também terá o título junto com o link do post;