web-dev-qa-db-fra.com

Obtenir post_content avec les balises <p>?

J'essaie de récupérer le contenu d'un message spécifique

$post = get_post(/* id */);
$content = $post->post_content;

Cependant, cela récupère le contenu sans sauts de ligne. J'ai remarqué que c'est parce qu'il omet tout

mots clés.

Comment puis-je récupérer le contenu avec le

balises, comme je le vois sur la page de publication et également sur l'onglet de texte de l'éditeur de publication?

15
Lisandro Vaccaro

Jusqu'à présent, les deux réponses sont correctes, mais une réponse plus approfondie semble justifiée.

Si vous utilisez ceci:

$content = wpautop( $post->post_content );

vous appliquez la fonction qui ajoute des balises de paragraphe pour publier du contenu. wpautop() est l’une des nombreuses fonctions (y compris parfois des fonctions de plug-in) qui s’accroche au the_content. Par conséquent, si vous procédez ainsi:

$content = apply_filters('the_content', $post->post_content);

vous faites exécuter le contenu de la publication via tous les filtres sur the_content, qui inclut wpautop() par défaut.

Enfin, si vous êtes au courant, vous pouvez simplement faire ceci:

$content = apply_filters( 'the_content', get_the_content() );

qui est essentiellement un wrapper pour le deuxième extrait de code, mais bien sûr, il est un peu plus joli. Mise à jour du 1 septembre 2018: Révisée sur la base de comment . Props @ Timmb.

En règle générale, je dirais que la "bonne façon" de procéder est la dernière à la première puisque l'utilisation d'une fonction centrale WP devrait permettre davantage de compatibilité avec les versions antérieures (du moins théoriquement). La seule autre décision à prendre est alors de décider si vous souhaitez autoriser WordPress et les plugins à modifier également le contenu de la publication. Si c'est le cas, utilisez certainement les 2ème ou 3ème options.

25
mrwweb

Trouvé la solution:

$content = apply_filters('the_content', $post->post_content);
5
Lisandro Vaccaro

Deuxième méthode pour obtenir du contenu de publication avec la balise p est

echo wpautop( $post->post_content );
2
DINESH BHIMANI