Criar índice de Posts no WordPress
Temos muitos posts ótimos aqui no site, a maioria não é dos meus ;-P, mas muita gente que nos conhece há pouco tempo tem usado esse recurso para poder saber de forma mais sucinta o que nós publicamos aqui.
Criar esse índice de Posts dentro do WordPress devia ser algo nativo, mas não é, pesquisei em vários lugares e não achei nada do jeito que eu queria. Mas com a ajuda dos meu amigos, Rodrigo Maciel e Valter Filho (@v_filho no Twitter), o que eu tentei em algumas horas sem sucesso eles resolveram em poucos minutos :-), quem sabe faz diferença, afinal de PHP sei nada …
Vamos ao índice que é o que interessa.
Primeiro devemos saber o índice é pela categoria dos posts, ou seja, só vai para o índice os posts cuja categoria você quer que apareçam. Para saber as categorias logue como Administrador no WordPress:
Clique em Posts e depois em Categorias, agora anote o ID das categorias que você quer, veja o exemplo abaixo:
Com o número das categorias em mãos podemos prosseguir.
Agora acesse o servidor WordPress, seja pela página ou por um shell remoto (SSH) e crie um arquivo dentro do diretório do tema que você usa, sinceramente não sei fazer pela interface pois só uso o shell ;-P.
Não é para criar um Post nem uma Página, por isso tem que ser um arquivo criado com um Editor de Texto qualquer.
O arquivo tem que esta no diretório do tema.
# cd /usr/share/wordpress/wp-content/themes/twentyten
# vi post-index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php /* Template Name: Todos os Posts */ ?> <?php get_header(); ?> <?php $lista_categ=array(1033,3,12,8,5,901,25,16,964,1203,7,1173,1062,980,1368,21,20,19); ?> <div id="content" class="widecolumn"> <?php foreach($lista_categ as $categ_id) { ?> <h3> <?php echo get_the_category_by_id($categ_id); ?> </h3> <ul> <?php $posts=query_posts('cat='.$categ_id.'&posts_per_page=-1'); ?> <?php while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php }; ?> </div> <?php get_footer(); ?> |
Onde:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Este é o título da Página para o tema do Wordpress, quando criarmos a página precisamos de um modelo pra criar, esse será o nome do modelo. <?php /* Template Name: Todos os Posts */ ?> Este trecho mantém o cabeçalho padrão do seu tema: <?php get_header(); ?> Este trecho cria um Array com os ID das categorias que você quer que estejam no índice, a ordem dos números no Array é a ordem que as categorias serão exibidas na página: <?php $lista_categ=array(1033,3,12,8,5,901,25,16,964,1203,7,1173,1062,980,1368,21,20,19); ?> Este trecho cria um LOOP com as categorias que estão na variável $lista_categ e entrega uma por uma na variavel $categ_id e depois pega o ID da categoria ($categ_id) e mostra o nome dela com get_the_category_by_id(...): <?php foreach($lista_categ as $categ_id) { ?> <?php echo get_the_category_by_id($categ_id); ?> Este trecho pega os posts da categoria e mostra todos os posts (posts_per_page=-1): <?php $posts=query_posts('cat='.$categ_id.'&posts_per_page=-1'); ?> Agora criamos o loop para exibir o link dos posts e fechamos o LOOP: <?php while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php }; ?> Agora pegamos o rodapé padrão do tema: <?php get_footer(); ?> |
Agora com o arquivo devidamente criado, vamos na inteface do WordPress e clique em Páginas e depois em Adicionar Nova:
Agora dê um nome a página, eu usei “Todos os Posts”, assim o link fica assim: https://cooperati.com.br/todos-os-posts/
No canto direito da tela abaixo da caixa Publicar, na caixa Atributos da Página, clique em modelo e escola Todos os Posts.
Agora salve e publique em algum post o Link do seu índice.
Espero que ajude seu site a ser mais organizado :-).
Lembrando que esse post é graças aos meus amigos Rodrigo Maciel e Valter Filho, pois sem eles eu estaria enrolado no get_posts ainda. 🙂