Come ottenere 'post_content' senza rimuovere i tag <p>?


20

Sto cercando di recuperare il contenuto del post di un post specifico:

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

Tuttavia, questo recupera il contenuto senza interruzioni di riga e omette tutti i <p>tag.

Qual è il modo corretto di recuperare il contenuto del post senza rimuovere i <p>tag (come mostrato nella pagina del post o nella scheda " Testo " dell'editor del post )?

Risposte:


30

Entrambe le risposte finora sono corrette ma una risposta più approfondita sembra giustificata.

Se lo usi:

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

stai applicando l'unica funzione che aggiunge tag di paragrafo per pubblicare contenuti. wpautop()è una delle molte funzioni (incluse le funzioni del plugin a volte) che si aggancia the_content, quindi se lo fai:

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

stai facendo in modo che il contenuto dei post passi attraverso tutti i filtri su the_contentcui include wpautop()per impostazione predefinita.

Infine, se sei nel loop, puoi semplicemente fare questo:

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

che è essenzialmente un wrapper per il secondo frammento di codice, ma ovviamente è un po 'più bello. Aggiornamento 1 settembre 2018: revisionato in base al commento . Props @timmb.

In generale, direi che il "modo giusto" preferito per farlo è dall'ultimo al primo poiché l'uso di una funzione WP di base dovrebbe consentire una maggiore compatibilità con le versioni precedenti (almeno in teoria). L'unica altra decisione da prendere è se si desidera consentire a WordPress e ai plug-in di modificare anche il contenuto dei post. In tal caso, utilizzare sicuramente la seconda o la terza opzione.


1
Penso che questa soluzione finale sia errata. Da 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'." Ciò non suggerirebbe che l'approccio corretto sarebbe $content = apply_filters('the_content', get_the_content);?
Tim MB


4

Il secondo metodo per ottenere contenuti post con tag p è

echo wpautop( $post->post_content );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.