web-dev-qa-db-fra.com

Comment obtenir la liste des publications dans une page statique autre qu'une page d'accueil?

Ainsi, pour les milliers de personnes utilisant WP en tant que CMS, une approche typique consiste à utiliser l'option "Une page statique" de la page d'administration Paramètres> Lecture.

Cependant, je suis dans un scénario différent: notre page d'accueil affiche un contenu statique ( home.php modèle conduit cela), et nous avons un secondaire page (appelée News ) qui devrait afficher la liste des publications les plus récentes (celle que vous trouvez habituellement sur la page de couverture d'un blog moyen).

J'ai configuré la page Actualités pour utiliser un modèle personnalisé ( page-NewsIndex.php ); basé sur le modèle archive.php de TwentyTen, ce fichier affiche un en-tête, appelle rewind_posts () puis appelle get_template_part ('loop', 'newsindex') afin que nous aboutissions à loop.php (ou loop-newsindex.php, si existe). Peachy.

Loop.php a votre structure de boucle typique (encore une fois, basée sur le modèle loop.php de TwentyTen - modifié pour simplifier car nous n'avons pas besoin de 3 types de boucles ):

<?php while ( have_posts() ) : the_post(); ?>

Cependant, lorsque nous accédons à la page, cette boucle semble utiliser l'URL actuelle pour déterminer les publications à afficher, comme si la page Nouvelles définissait une catégorie - ce qui n'est pas le cas pour nous. Quels objets query_posts me conviendraient pour simuler les objets query_posts que WP exécute généralement pour vous lorsque vous accédez à la page de couverture d'un blog classique?

1
FOR

Pour récupérer des articles sur mon blog, j'utilise les éléments suivants:

<?php $recentPosts = new WP_Query(); $recentPosts->query('showposts=5&cat=CAT_ID_GOES_HERE'); while($recentPosts->have_posts()): $recentPosts->the_post(); ?>

Ensuite, créez le code pour contrôler l’affichage de chaque message. Donc, pour un exemple très simple:

<h1 class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

Ensuite, à la fin des messages, il vous suffit de terminer votre boucle while:

<?php endwhile; ?>
3
Adam Thompson

Juste pour être sûr - vous n'utilisez pas du tout les paramètres Reading ici? Juste la page d'accueil régulière et la page statique régulière?

  • votre page News est une page statique, donc sa boucle (native WP boucle créée à partir d'une URL) devrait refléter cela (vous ne savez donc pas comment elle semble être une catégorie);
  • query_posts() est une fonction destinée à ajuster une telle boucle native. Vous ne devriez pas l'utiliser ici, car vous tenteriez de forcer le changement de page statique en page d'index, ce qui aboutirait à d'horribles bugs.
  • vous pouvez utiliser les options personnalisées WP_Query ou get_posts() pour afficher certaines publications sur une page statique, mais la pagination ne fonctionnera probablement pas.

Dans l’ensemble, j’ai l’impression que vous réinventez la roue ici. Settings > Reading semble être un match parfait.

  1. Front page avec votre contenu statique et le modèle front-page.php.
  2. Posts page qui utilisera automatiquement la boucle par défaut pour les dernières publications ou peut être personnalisé avec le modèle home.php.

Cela ressemble exactement à ce que vous essayez d'obtenir, non?

PS TwentyTen loop.php me fait peur. Il semble que la facilité d'utilisation et le bon sens aient été sacrifiés pour une flexibilité conditionnelle maximale.

1
Rarst

Je ne suis pas sûr que ce soit exactement ce dont vous avez besoin, mais peut-être aimeriez-vous jeter un coup d'œil sur ma solution de contournement. C'est une fonction qui affiche une liste des publications où vous le souhaitez, avec des vignettes pour la première image de la publication.

http://wpworks.wordpress.com/2011/02/01/display-wordpress-post-list-with-custom-size-thumbnails/

J'espère que tu trouves cela utile.

Meilleures salutations,

Alvaro

0
user2876