Sous WordPress, créer un excerpt manuellement

Pour le cas où ça intéresserait quelqu’un, voici une fonction PHP qui refait le travail de celle de WordPress, mais à partir de n’importe quel contenu et pas seulement celui de l’article courant.

<?php
function do_make_excerpt($excerpt, $content, $length = null, $withMoreLink = true) {
  $raw_excerpt = $excerpt;
  if ( '' == $excerpt ) {
    $text = strip_shortcodes( $content );

    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]&gt;', $text);
    $text = strip_tags($text);
    $excerpt_length = isset($length) ? $length : apply_filters('excerpt_length', 55);
    $excerpt_more = $withMoreLink ? apply_filters('excerpt_more', ' ' . '[...]') : ' ...';
    $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
    if ( count($words) > $excerpt_length ) {
      array_pop($words);
      $text = implode(' ', $words);
      $text = $text . $excerpt_more;
    } else {
      $text = implode(' ', $words);
    }
  }
  return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
?>

Un exemple d’utilisation avec une liste d’articles ramenés par la fonction get_posts :

<?php
$posts = get_posts();
if (!empty($posts)) : ?>
<ul>
<?php
  foreach ($posts as $post) :
    $postExcerpt = do_make_excerpt($post->post_excerpt, $post->post_content, 10, false);
  endforeach;
?>
</ul>
<?php endif; ?>

Leave a Reply

Your email address will not be published. Required fields are marked *

Mesure anti-spam. Merci de copier le code « PvGqGj » dans le champ ci-dessous :