web-dev-qa-db-fra.com

Créer une page "Tous les messages" ou "Archives" avec WordPress 3.0?

J'aimerais créer une page "Tous les messages" sur le blog - Ocean Bytes qui contient une liste non ordonnée de tous les titres des messages à ce jour, avec chaque titre. hyperlien vers son article de blog.

Il semble y avoir plusieurs plugins qui font quelque chose comme ceci, mais la plupart ne listent pas encore Wordpress 3.0+ comme supporté, ou ils veulent créer un sous-ensemble des publications du blog par Année puis par Mois, ce qui n'est pas souhaité.

Des suggestions pour le "meilleur moyen"?

THX.

3
cpuguru

J'ai fini par créer un modèle de page appelé "allposts-page.php" dans le dossier Twenty-Ten Themes contenant le code suivant:

<?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(); ?>

J'ai ensuite créé une nouvelle page à l'aide du système d'administration Wordpress avec le titre "Tous les messages" et sélectionné le modèle "Tous les messages" dans le menu déroulant. Vous n'avez pas besoin d'entrer quoi que ce soit dans le corps.

La page résultante peut être trouvée via:

www.oceanbytes.org/all-posts/

La valeur par défaut de "wp_get_archives" est "mensuel", mais j'ai choisi "postbypost", car je souhaitais simplement répertorier tous les articles dans la liste. Plus d’options sont disponibles sur le site Wordpress via Référence des fonctions/wp get archives

3
cpuguru

Créez un nouveau fichier de modèle et faites-le en tant que boucle:

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();

Ensuite, utilisez simplement ce modèle pour une page et il générera automatiquement la page. Consultez la page de codex pour query_posts() pour plus d'informations sur la modification de la requête.

3
John P Bloch

La "meilleure façon" serait avec un modèle de page personnalisé. Tout comme index.php parcourt toutes les publications, vous pouvez exécuter une requête personnalisée pour tout parcourir et ne renvoyer que les informations souhaitées (titre, URL) au navigateur.

Voici quelques bons tutoriels pour la création d'un modèle de page personnalisé:

3
EAMann