web-dev-qa-db-fra.com

Obtenir un extrait de $ post-> post_content

Je modifie la sortie d'un plugin en utilisant un filtre, et la variable $ post m'est disponible, ainsi je peux afficher le contenu de la publication comme suit:

<h3><?php echo $post->post_title; ?></h3>
<?php echo apply_filters( 'the_excerpt', $post->post_excerpt ); ?>

Cependant, ce qui précède n'affiche l'extrait que si le contenu a été saisi dans le champ extrait. Il ne montre pas une version tronquée du contenu comme ce serait le cas si vous pouviez utiliser "the_excerpt" ou "get_the_excerpt". J'ai aussi essayé:

<?php echo apply_filters( 'the_excerpt', $post->post_content ); ?>

Mais cela ne contient que le contenu complet du message.

Et j'ai essayé ceci:

<?php echo apply_filters('the_excerpt', get_post_field('post_excerpt', $post-ID)); ?>

Mais cela ne retourne rien.

Est-il possible d'extraire l'extrait du contenu complet de $ post lorsque je ne peux pas utiliser the_excerpt ou get_the_excerpt?

Je vous remercie!

3
LBF

Lorsque vous vous trouvez dans la boucle , cela produira un extrait de $post->post_content directement:

<?php echo wp_trim_excerpt(); ?>

En savoir plus ICI .

Solution alternative:

Si vous n'êtes pas dans la boucle , vous pouvez utiliser une implémentation similaire à celle utilisée dans la fonction wp_trim_excerpt

$text = strip_shortcodes( $post->post_content );
$text = apply_filters( 'the_content', $text );
$text = str_replace(']]>', ']]&gt;', $text);
$excerpt_length = apply_filters( 'excerpt_length', 55 );
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[&hellip;]' );
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
echo $text;
4
Fayaz