Come ottenere 'post_content' senza rimuovere i tag <p>?
Sto cercando di recuperare il contenuto di uno specifico post:
$post = get_post(/* id */);
$content = $post->post_content;
Tuttavia, questo recupera il contenuto senza interruzioni di riga e omette tutti i tag <p>
.
Qual è il modo corretto per recuperare il contenuto del post senza rimuovere i tag <p>
(come viene mostrato nella pagina del post o nella scheda "Testo" dell'editor del post)?

Entrambe le risposte fornite finora sono corrette, ma sembra necessaria una spiegazione più approfondita.
Se utilizzi questo:
$content = wpautop( $post->post_content );
stai applicando la funzione che aggiunge i tag di paragrafo al contenuto del post. wpautop()
è una delle molte funzioni (incluse a volte le funzioni dei plugin) che si agganciano a the_content
, quindi se fai questo:
$content = apply_filters('the_content', $post->post_content);
otterrai il contenuto del post processato da tutti i filtri collegati a the_content
, che include wpautop()
di default.
Infine, se sei nel loop, puoi semplicemente fare:
$content = apply_filters( 'the_content', get_the_content() );
che essenzialmente è un wrapper per il secondo snippet di codice, ma ovviamente è più elegante. Aggiornamento 1 Set 2018: Revisione basata su commento. Riconoscimenti a @timmb.
In generale, direi che il modo "corretto" preferito per farlo è dall'ultimo al primo, poiché l'uso di una funzione core di WP dovrebbe garantire una maggiore compatibilità all'indietro (almeno in teoria). L'unica altra decisione da prendere è se vuoi permettere a WordPress e ai plugin di modificare anche il contenuto del post. Se è questo il caso, usa sicuramente la 2a o 3a opzione.

Penso che questa soluzione finale sia errata. Da https://codex.wordpress.org/Function_Reference/get_the_content: "Una differenza importante rispetto a the_content() è che get_the_content() non passa il contenuto attraverso il filtro 'the_content'".
Questo non suggerirebbe che l'approccio corretto sarebbe $content = apply_filters('the_content', get_the_content);
?
