web-dev-qa-db-fra.com

Affichage d'extraits d'articles récents sur une page d'accueil statique

J'essaie d'afficher une page d'accueil statique avec les publications récentes en bas. Plus précisément, je souhaite afficher uniquement un extrait des publications récentes, qui serait renvoyé par the_content() si la page de couverture était dynamique. Ce que j’ai réussi jusqu’à présent, c’est d’afficher la page de couverture avec les messages récents, mais elle affiche le contenu complet des messages, pas seulement l’extrait. Je ne veux pas générer mes propres extraits car je veux qu'ils soient cohérents avec les extraits qui apparaissent sur les pages de catégories et d'archives.

Ceci est une version simplifiée de mon fichier front-page.php pour le moment:

<?php get_header(); ?>
<?php the_post(); ?>

<!-- This block is modified slightly from page.php -->
<a href="<?php bloginfo('url'); ?>">Home</a> &gt; <?php the_title(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>

<div id="recent_posts">
<h2>Latest entries</h2>
<?php
$recent_posts_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5));

while ($recent_posts_query->have_posts())
{
$recent_posts_query->the_post();
?>
<div class="post">
<h3><?php echo the_title(); ?></h3>
<p>by <?php the_author(); ?></p>
<?php the_content(); ?>
</div>
<?php
}
?>
</div>

<?php get_footer(); ?>

Comment puis-je obtenir que the_content() ne renvoie que l'extrait? (La plupart de mes publications ont une balise <!--more-->, et celles qui ne le sont pas, je veux qu'elles apparaissent intégralement car ce sont des publications courtes.)

EDIT: essayé avec the_excerpt() mais il renvoie un extrait généré automatiquement même si l'article contient une balise <!--more-->.

1
Micheal Johnson

J'ai trouvé la solution. Selon https://codex.wordpress.org/Function_Reference/the_content#Overriding_Archive.2FSingle_Page_Behavior , il faut ajouter

global $more;
$more = 0;

avant l'appel de the_content(). Alors maintenant, ma boucle intérieure lit:

<?php
$recent_posts_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5));

while ($recent_posts_query->have_posts())
{
$recent_posts_query->the_post();
?>
<div class="post">
<h3><?php echo the_title(); ?></h3>
<p>by <?php the_author(); ?></p>
<?php
global $more;
$more = 0;
the_content();
?>
</div>
<?php
}
?>
1
Micheal Johnson