Améliorer the_excerpt sur WordPress

716th fév 2010Scripts & Astuces wordpress

Si comme moi, vous voulez que votre site (blog) respecte les normes SEO et ainsi afficher un extrait de votre article sur votre page d’accueil, vos pages de catégories ou bien même vos pages de recherches avec du html, vous avez surement dû être bloqué par la fonction the_excerpt qui affiche un extrait de votre article dans wordpress sans aucune balise html…

En effet, cette fonction à les limites suivantes :

  • Impossible de changer le nombre de mots (55) définis par WordPress
  • WordPress supprime toutes les balises html de la fonction the_excerpt.

Ne vous inquiétez pas, il y a un moyen très simple d’améliorer ces deux problèmes.

Il vous suffit juste de copiez/coller le code ci-dessous dans votre fichier functions.php
(se trouvant dans le répertoire de votre thème).

function improved_trim_excerpt($text) {
	global $post;
	if ( '' == $text ) {
		$text = get_the_content('');
		$text = apply_filters('the_content', $text);
		$text = str_replace(']]>', ']]>', $text);
		$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
		$text = strip_tags($text, '<p><a><strong><br /><font><h2><h3><span>');
		$excerpt_length = 80;
		$words = explode(' ', $text, $excerpt_length + 1);
		if (count($words)> $excerpt_length) {
			array_pop($words);
			array_push($words, '[...]');
			$text = implode(' ', $words);
		}
	}
	return $text;
}

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');

Voila, rien de plus, vous pouvez désormais utiliser la fonction the_excerpt sur votre wordpress comme d’habitude ;)

Pour rappel : On affiche l’extrait d’un article dans wordpress comme ceci :

<?php echo the_excerpt(''); ?>

7 Comments Flux des commentaires

  1. JuliaJulia (7 mars 2010, 14 h 57 min).

    Bonjour,
    Merci beaucoup, je cherchais désespérément une fonction qui améliorait the excerpt, et je l’ai trouvée finalement ici :)

    alors bravo !!

    Julia

  2. samsam (16 mars 2010, 22 h 46 min).

    Lorsque je colle le code ci-dessus dans mon fichier functions.php de mon thème, tout le site affiche des pages blanches, tout est planté….je ne comprend pas très bien.

  3. JereJere (17 mars 2010, 0 h 17 min).

    Bonjour,

    @sam : As-tu vérifié que le code the excerpt est bien écrit dans ta page index.php par exemple ?
    Sinon si dans ton fichier fonctions.php il n’y avait rien écrit dedans, tu dois insérer ce code entre les balises

    <?php  ?>

    .

    @Julia : Merci, c’est vrai qu’elle manque cruellement à WordPress.

  4. samsam (17 mars 2010, 8 h 54 min).

    Je ne comprend pas ta question du coup…

    l’appel de la fonction the_excerpt est bien réalisé dans le fichier index.php, mais la je n’ai rien changé par rapport au standard. ==> the_excerpt();

    Et je n’ai fait que copier ton code dans le fichier fonctions.php. Et tant que ton code est dans le fichier fonctions.php, toutes les pages du sites sont blanches, je ne peux plus rien faire, tout est HS;

    …j’ai trouvé, j’avais copié deux fois la fonction dans mon fichier par erreur….désolé. Ca marche très bien ;) Merci.

  5. Ellouze ZiedEllouze Zied (14 novembre 2012, 16 h 04 min).

    Merci bien
    votre code m’a aider dans le développement d’un site

  6. BenoîtBenoît (22 février 2013, 13 h 03 min).

    Excellent !
    Je doutais que ça fonctionne après un probablement grand nombre de mises-à-jour du système (je début sous wordpress). Mais avec la 3.5.1, ce code rend exactement le service qu’on lui demande et sans rien planter.
    Merci :-D

  7. GwenGwen (3 juin 2013, 14 h 52 min).

    Merci beaucoup,

    Je viens de gagner beaucoup de temps grâce à toi.

    Gwen

Add a Comment