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:

categorias

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

<?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:

 
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:
paginas-nova

Agora dê um nome a página, eu usei “Todos os Posts”, assim o link fica assim: http://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.

todosposts

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. 🙂