Ottenere l'estratto da $post->post_content
Sto modificando l'output di un plugin utilizzando un filtro e ho a disposizione la variabile $post, quindi posso visualizzare il contenuto del post così:
<h3><?php echo $post->post_title; ?></h3>
<?php echo apply_filters( 'the_excerpt', $post->post_excerpt ); ?>
Tuttavia, il codice sopra mostra solo l'estratto se è stato inserito del contenuto nel campo apposito. Non mostra una versione troncata del contenuto come farebbe se potessi usare "the_excerpt" o "get_the_excerpt". Ho anche provato:
<?php echo apply_filters( 'the_excerpt', $post->post_content ); ?>
Ma questo restituisce semplicemente il contenuto completo del post.
E ho provato anche questo:
<?php echo apply_filters('the_excerpt', get_post_field('post_excerpt', $post->ID)); ?>
Ma non restituisce nulla.
Esiste un modo per ottenere l'estratto dal contenuto completo quando non posso usare the_excerpt o get_the_excerpt?
Grazie!

Quando sei nel loop, questo produrrà direttamente un estratto dal $post->post_content
:
<?php echo wp_trim_excerpt(); ?>
Leggi di più QUI.
Soluzione Alternativa:
Se non sei nel loop, puoi utilizzare un'implementazione simile a quella della funzione wp_trim_excerpt
:
$text = strip_shortcodes( $post->post_content );
$text = apply_filters( 'the_content', $text );
$text = str_replace(']]>', ']]>', $text);
$excerpt_length = apply_filters( 'excerpt_length', 55 );
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
echo $text;
