Comment créer et personnaliser des extraits WordPress

Publié: 2020-04-16

L'extrait est un texte facultatif associé à un article. La plupart du temps, il est utilisé comme résumé de publication. Si vous utilisez le nouvel éditeur, vous verrez qu'il y a une option dans la barre latérale appelée Extraire :

Extraits de Gutenberg
Extraits de Gutenberg.

S'il ne s'affiche pas, vous devrez peut-être activer l'option dans les paramètres de Gutenberg. Cliquez sur l'icône points de suspension dans le coin supérieur droit de l'éditeur puis sur Options :

Paramètres de Gutenberg
Paramètres de Gutenberg.

Ensuite, recherchez Extrait et activez-le :

Comment activer le panneau pour éditer l'extrait d'un message.
Comment activer le panneau pour éditer l'extrait d'un message.

Selon la configuration de votre thème, l'extrait apparaîtra lorsque vous consulterez vos articles dans le blog, les résultats d'une recherche, etc. Par exemple, sur notre blog, vous pouvez voir comment tous nos articles sont présentés avec leurs extraits associés :

Articles sur le blog de Nelio avec leurs extraits.
Articles sur le blog de Nelio avec leurs extraits.

Maintenant, est-ce toujours obligatoire d'écrire cet extrait ? Si nous ne le faisons pas, que fait WordPress ? Est-ce que ça montre quelque chose ou rien du tout ? Eh bien, nous allons répondre à ces questions et nous examinerons de plus près les options que WordPress nous offre pour personnaliser les extraits.

Comment fonctionnent les extraits WordPress

WordPress a deux fonctions pour obtenir l'extrait d'un article : get_the_excerpt et the_excerpt . Les deux sont définis dans wp-includes/post-template.php et si vous jetez un coup d'œil à leur code source, vous découvrirez que tout ce que the_excerpt fait est de echo au résultat de get_the_excerpt (après l'avoir filtré avec the_excerpt ). Donc, essentiellement, nous pouvons dire en gros que la seule chose que vous devez comprendre pour savoir comment fonctionnent les extraits dans WordPress est la fonction get_the_excerpt .

Comme vous pouvez le voir, get_the_excerpt est extrêmement simple :

 function get_the_excerpt( $post = null ) { // ... $post = get_post( $post ); if ( empty( $post ) ) { return ''; } // ... return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); }

Fondamentalement, il charge un article (si vous n'en définissez pas, il utilise l'article disponible dans la boucle WordPress) et renvoie son attribut post_excerpt . Il semble donc qu'aucun extrait ne signifie que WordPress ne montrera rien à la fin, n'est-ce pas ?

Pas si vite, mon pote.

Notez que cette fonction ne renvoie pas directement la valeur de post_excerpt. Au lieu de cela, il le filtre à l'aide d'un nouveau filtre : get_the_excerpt. Donc, s'il y a des actions associées à ce filtre, le résultat final peut potentiellement changer et ne plus être la chaîne vide…

Et en effet, c'est ce qui se passe ici ! Si nous n'écrivons pas d'extrait pour un article donné, voici ce que nous verrons dans le front-end :

Extrait automatique.
Extrait automatique généré par WordPress.

les premiers mots de notre article seront l'extrait généré par WordPress.

La fonction wp_trim_excerpt

Si nous effectuons une recherche rapide dans le code source de WordPress, nous verrons que, par défaut, il n'y a qu'une seule action associée au filtre get_the_excerpt . Plus précisément, dans wp-includes/default-filters.php nous voyons qu'une fonction nommée wp_trim_excerpt est accrochée.

Selon la documentation WordPress, wp_trim_excerpt est chargé de générer un extrait avec un maximum de 55 mots et des points de suspension ajoutés si nécessaire. Et voici la clé : la fonction considère que générer un extrait « est nécessaire » s'il n'y en a pas déjà un (ce qui, en général, revient à dire que l'utilisateur n'a pas écrit l'extrait sous l'éditeur). Vous pouvez le voir dans le code source de la fonction :

 function wp_trim_excerpt( $text = '', $post = null ) { $raw_excerpt = $text; if ( '' == $text ) { $post = get_post( $post ); $text = get_the_content( '', false, $post ); // [...] » Generates the excerpt using the post content } return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt ); }

Voir? S'il n'y a pas d'extrait ( $text est la chaîne vide), récupérez le contenu de l'article actuel ( get_the_content from $post ) et utilisez-le pour générer un extrait.

À partir de ce moment, vous pouvez continuer à creuser et découvrir comment WordPress génère réellement le code source. Cependant, je pense que vous avez déjà compris l'idée, alors jetons un coup d'œil à la documentation, car elle éclaire un peu ce sujet :

Renvoie un maximum de 55 mots avec des points de suspension ajoutés si nécessaire. La limite de 55 mots peut être modifiée par des plugins/thèmes en utilisant le filtre excerpt_length . La chaîne ' […]' peut être modifiée par les plugins/thèmes à l'aide du filtre excerpt_more .

Documentation wp_trim_excerpt

Alors maintenant, vous savez tout ce qu'il y a à savoir pour personnaliser entièrement les extraits automatiques que WordPress génère pour vos publications.

Comment personnaliser les extraits automatiques

Jetons un coup d'œil à quelques exemples de la façon dont nous pouvons utiliser les filtres que nous avons vus tout au long de la publication d'aujourd'hui pour personnaliser les extraits automatiques. Au fait, rappelez-vous que pour ajouter l'une de ces modifications à votre site Web, vous devez probablement créer un plugin.

a) Comment changer le nombre de mots que je veux dans mes extraits

C'est l'un des plus simples. Nous avons déjà vu que nous avons à notre disposition le filtre excerpt_length pour choisir combien de mots nous voulons dans nos extraits, alors utilisons-le :

 function nelio_100_word_excerpts( $length ) { if ( is_admin() ) { return $length; } return 100; } add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 );

Notez que la première chose que nous faisons dans notre fonction est de nous assurer que nous sommes dans le front-end. Si nous sommes sur le Dashboard ( is_admin ), mieux vaut ne rien faire avec nos extraits. Une fois que nous sommes sûrs que nous sommes dans un "environnement sûr", nous avons juste besoin de retourner notre nombre magique. Dans mon cas : 100 mots.

b) Comment changer le texte qui apparaît après une extraction automatique

Celui-ci est aussi extrêmement facile car nous avons déjà vu qu'il existe un filtre pour cela :

 function nelio_clickable_read_more( $more ) { if ( is_admin() ) { return $more; } return sprintf( '<a href="%s">Tell me more!</a>', esc_url( get_the_permalink() ) ); } add_filter( 'excerpt_more', 'nelio_clickable_read_more', 99 );

Dans ce cas, tout ce que nous faisons est de renvoyer le texte "Dis-m'en plus !" après le résumé et faites-en un lien afin que les utilisateurs puissent cliquer dessus.

c) Comment limiter la longueur d'un extrait à un certain nombre de caractères

La fonction wp_trim_words a un filtre du même nom que nous pouvons utiliser pour modifier l'extrait final utilisé par WordPress. Alors profitons-en :

 function nelio_140_char_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } return mb_substr( $excerpt, 0, 140 ); } add_filter( 'wp_trim_excerpt', 'nelio_140_char_excerpts', 99, 2 );

Le filtre wp_trim_words s'applique aux extraits automatiques et définis par l'utilisateur. Dans mon exemple, je ne suis intéressé que par la modification d'extraits qui ont été générés automatiquement, je dois donc ajouter une nouvelle condition. Si vous vous en souvenez, wp_trim_words ne génère un extrait automatique que si l'extrait d'origine était vide, il vous suffit donc de cocher cette case pour obtenir le résultat souhaité.

D'autre part, remarquez que j'ai utilisé mb_substr au lieu de la fonction classique substr . Si vous vous demandez pourquoi, la raison est simple : si vous écrivez dans votre blog dans une langue autre que l'anglais, vous utiliserez probablement des caractères multi-octets, et raccourcir des chaînes multi-octets avec substr peut mal tourner. Lisez la documentation PHP pour plus d'informations à ce sujet.

d) Comment créer des extraits avec le premier paragraphe du contenu

Et enfin, un exemple de comment créer un extrait en utilisant exactement le premier paragraphe de votre message. Aucune explication cette fois, alors faites attention à ce que je fais :

 function nelio_first_paragraph_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } $content = apply_filters( 'the_content', get_the_content() ); return substr( $content, 0, strpos( $content, '</p>' ) + 4 ); } add_filter( 'wp_trim_excerpt', 'nelio_first_paragraph_excerpts', 99, 2 );

En bref…

La grande puissance de WordPress réside dans son extensibilité. Aujourd'hui, nous avons vu en détail comment WordPress génère des extraits de publication et tous les filtres et fonctions qu'il propose pour personnaliser le résultat final selon vos besoins.

J'espère que vous avez aimé le post d'aujourd'hui. Partagez-le avec vos amis afin que davantage de personnes connaissent les avantages de WordPress !

Image sélectionnée par Aaron Burden sur Unsplash.