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> > <?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-->
.
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
}
?>