Cum să obții 'post_content' fără a elimina tag-urile <p>?
Încerc să preiau conținutul unei postări specifice:
$post = get_post(/* id */);
$content = $post->post_content;
Cu toate acestea, această metodă preia conținutul fără întreruperi de linie și omite toate tag-urile <p>
.
Care este modalitatea corectă de a prelua conținutul postării fără a elimina tag-urile <p>
(așa cum este afișat pe pagina postării sau în tab-ul "Text" din editor)?

Ambele răspunsuri de până acum sunt corecte, dar pare necesar un răspuns mai detaliat.
Dacă folosești această abordare:
$content = wpautop( $post->post_content );
aplici funcția care adaugă tag-uri de paragraf conținutului articolului. wpautop()
este una dintre multiplele funcții (inclusiv unele din plugin-uri) care se atașează la the_content
, așadar dacă folosești:
$content = apply_filters('the_content', $post->post_content);
vei obține conținutul articolului procesat prin toate filtrele atașate la the_content
, care implicit include și wpautop()
.
În final, dacă ești în loop, poți folosi simplu:
$content = apply_filters( 'the_content', get_the_content() );
care este practic un wrapper pentru al doilea fragment de cod, dar cu o sintaxă mai elegantă. Actualizare 1 Sep 2018: Revizuit pe baza comentariului. Mulțumiri @timmb.
În general, aș spune că metoda "corectă" preferată este de la ultima la prima variantă, deoarece utilizarea unei funcții native din WordPress ar trebui să asigure mai multă compatibilitate înapoi (teoretic, cel puțin). Singura altă decizie de luat este dacă dorești să permiți WordPress-ului și plugin-urilor să modifice și ei conținutul articolului. Dacă acesta este cazul, cu siguranță folosește a 2-a sau a 3-a variantă.

Cred că această soluție finală este incorectă. Conform https://codex.wordpress.org/Function_Reference/get_the_content : "O diferență importantă față de the_content() este că get_the_content() nu trece conținutul prin filtrul 'the_content'."
Nu ar sugera acest lucru că abordarea corectă ar fi $content = apply_filters('the_content', get_the_content);
?
