web-development-kb-pt.site

Criar uma página "Todos os Posts" ou "Archives" com o WordPress 3.0?

Gostaria de criar uma página "Todas as postagens" no blog Ocean Bytes que contém uma lista não ordenada de todos os Títulos das postagens até o momento, com cada título hyperlink para o seu blog.

Parece haver vários plugins que fazem algo assim, mas a maioria não lista o Wordpress 3.0+ como suportado ainda, ou eles querem subdividir as postagens do blog por ano e depois por mês, o que não é desejado.

Alguma sugestão para o "melhor caminho"?

THX.

3
cpuguru

Acabei criando um modelo de página chamado "allposts-page.php" na pasta Twenty-Ten Themes contendo o seguinte código:

<?php
/**
 * Template Name: All Posts
 *
 * A custom page template for displaying all posts.
 *
 * The "Template Name:" bit above allows this to be selectable
 * from a dropdown menu on the edit page screen.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */

get_header(); ?>

  <div id="container">
   <div id="content" role="main">
<h2>Archive of All Posts:</h2>
  <ul>
    <?php wp_get_archives('type=postbypost'); ?>
  </ul>


   </div><!-- #content -->
  </div><!-- #container -->

<?php get_footer(); ?>

Em seguida, criei uma nova página usando o sistema Admin do Wordpress com o título "Todas as postagens" e selecionei o modelo "Todas as postagens" na lista suspensa. Não precisava entrar em nada no corpo.

A página resultante pode ser encontrada via:

www.oceanbytes.org/all-posts/

O padrão para "wp_get_archives" é "mensalmente", mas eu escolhi "postbypost", pois queria listar todos os posts como na lista longa. Mais opções podem ser encontradas no site do Wordpress via Function Reference/wp get archives

3
cpuguru

Crie um novo arquivo de modelo e faça isso como o loop:

query_posts( array( 'posts_per_page' => -1, 'post_status' => 'publish' ) );
if( have_posts() ):
  echo '<ul>';
  while( have_posts() ):
    the_post();
    echo '<li><a href="';
    the_permalink();
    echo '">';
    the_title();
    echo '</a></li>';
  endwhile;
  echo '</ul>';
endif;
wp_reset_query();

Em seguida, basta usar esse modelo para uma página e ele irá gerar automaticamente a página. Confira a página do códice para query_posts() para mais informações sobre como alterar a consulta.

3
John P Bloch

A "Melhor maneira" seria com um modelo de página personalizado. Assim como o index.php faz um loop em todas as postagens, você pode executar uma consulta personalizada para percorrer tudo e apenas ecoar as informações desejadas (título, URL) para o navegador.

Aqui estão alguns bons tutoriais para criar um modelo de página personalizado:

3
EAMann