Comment obtenir 'post_content' sans supprimer les balises <p>?
3 réponses
- votes
-
- 2014-10-16
Les deux réponses à cejour sont correctes,mais une réponseplus approfondie semblejustifiée.
Si vous utilisez ceci:
$content = wpautop( $post->post_content );
vous appliquez la seulefonction qui ajoute desbalises deparagraphe au contenu de l'article.
wpautop()
est l'une desnombreusesfonctions (y comprisparfois desfonctions deplugin) qui s'accroche àthe_content
,donc si vousfaites ceci:$content = apply_filters('the_content', $post->post_content);
vousfaitespasser le contenu de l'article àtraverstous lesfiltres sur
the_content
quiinclutwpautop()
par défaut.Enfin,si vous êtes dans laboucle,vouspouvez simplementfaire ceci:
$content = apply_filters( 'the_content', get_the_content() );
quiestessentiellement un wrapperpour le deuxièmeextrait de code,maisbien sûr,c'est unpeuplusjoli.Mise àjour du 1er septembre 2018: révisée sur labase de comment . Props @timmb.Engénéral,je dirais que la "bonnefaçon" defaire celaest du dernier aupremier car l'utilisation d'unefonction WPprincipale devraitpermettre uneplusgrande compatibilité ascendante (dumoinsen théorie). La seule autre décision àprendreest alors de savoir si vous souhaitez autoriser WordPresset lesplugins àmodifier également le contenu de l'article. Sitelest le cas,utilisez certainement la deuxième ou latroisième option.
Both answers so far are correct but a more thorough answer seems warranted.
If you use this:
$content = wpautop( $post->post_content );
you're applying the one function that adds paragraph tags to post content.
wpautop()
is one of many functions (including plugin functions at times) that hooks ontothe_content
, so if you do this:$content = apply_filters('the_content', $post->post_content);
you're getting the post content run through any filters on
the_content
which includeswpautop()
by default.Finally, if you're in the loop, you can just do this:
$content = apply_filters( 'the_content', get_the_content() );
which is essentially a wrapper for the second code snippet, but of course it's a little nicer looking.Update 1 Sep 2018: Revised based on comment. Props @timmb.Generally, I'd say that the preferred "right way" to do this is from last to first since using a core WP function should enable more backwards compatibility (theoretically, at least). The only other decision to make then is whether you want to allow WordPress and plugins to also modify the post content. If that's the case, definitely use the 2nd or 3rd options.
-
Jepense que cette solutionfinaleestincorrecte.De https://codex.wordpress.org/Function_Reference/get_the_content: "Une différenceimportante avecthe_content ()est queget_the_content ()ne passepas le contenu àtravers lefiltre 'the_content'." Celane suggérerait-ilpas que l'approche correcte serait `$ content=apply_filters ('the_content',get_the_content);`?I think this final solution is incorrect. From https://codex.wordpress.org/Function_Reference/get_the_content : "An important difference from the_content() is that get_the_content() does not pass the content through the 'the_content' filter." Would this not suggest the correct approach would be `$content = apply_filters('the_content', get_the_content);`?
- 1
- 2017-09-01
- Tim MB
-
- 2014-10-16
J'aitrouvé la solution:
$content = apply_filters('the_content', $post->post_content);
Found the solution:
$content = apply_filters('the_content', $post->post_content);
-
- 2014-10-16
La deuxièmeméthodepour obtenir le contenu de l'article avec labalisep est
echo wpautop( $post->post_content );
Second method to get post content with p tag is
echo wpautop( $post->post_content );
J'essaie de récupérer le contenu d'un article spécifique:
Cependant,cela récupère le contenu sans saut de ligneet omettoutes lesbalises
<p>
.Quelleest labonnefaçon de récupérer le contenu de l'article sans supprimer lesbalises
<p>
(commeindiqué sur lapage de l'article ou dans l'éditeur de l'article " Texte "tab)?