Comment obtenir un extrait correctement formaté

Oct 30 2020

J'utilise un thème qui utilise une the_excerpt()fonction pour afficher l'extrait de l'article.

Tous les articles n'ont pas défini d'extrait personnalisé, donc the_excerpt()renvoie un élément du contenu de l'article.

Dans certains articles, le premier paragraphe contient un <br>, par exemple:

<p>My new question is:<br>why words are not separated by a white space?</p>

Le texte rendu est:

My new question is:why words are not separated by a white space?

Suite à ce post, j'ai implémenté cette solution:

function my_excerpt($text = '', $raw_excerpt = '') {
    add_filter('the_content', 'my_content', 6);

    // get through origin filter
    $text = wp_trim_excerpt($text);

    remove_filter('the_content', 'my_content', 6);
    return $text; } remove_filter( 'get_the_excerpt', 'wp_trim_excerpt'); add_filter( 'get_the_excerpt', 'my_excerpt'); function my_content($text)
{
    return str_replace( '<br>', ' ', $text );
}

Et cela fonctionne, mais j'ai deux questions:

  1. Pourquoi the_excerpt()ne remplace- t- il pas <br>par l'espace?
  2. Y a-t-il une meilleure façon d'atteindre ce résultat?

De plus, je suis assez nouveau dans le développement de wordpress, toutes les suggestions pour améliorer mon code sont les bienvenues.

Mise à jour : j'ai trouvé que ce problème est signalé , mais malheureusement, il est toujours ouvert.

Réponses

2 DaveRomsey Oct 30 2020 at 15:10

wp_trim_excerpt()appels wp_trim_words()qui s'appliquent wp_strip_all_tags()à l'extrait. La <br>balise est supprimée et n'est remplacée par rien.

Je ne sais pas si cela est faisable, mais avoir un espace après un deux-points est grammaticalement correct, et l'ajouter au contenu original n'affecterait pas le HTML, par exemple:

<p>My new question is: <br>why words are not separated by a white space?</p>