Cara mendapatkan 'POST_CONTENT' tanpa stripping <p> tag?

20

Saya mencoba untuk mengambil isi posting dari pos tertentu:

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

Namun, ini mengambil isi tanpa garis-istirahat dan menghilangkan semua <p>tag.

Apa cara yang tepat untuk mengambil konten posting tanpa menghilangkan <p>tag (seperti yang ditunjukkan pada halaman posting atau editor " Text " tab)?

Lisandro Vaccaro
sumber

Jawaban:

30

Kedua jawaban sejauh ini benar tetapi jawaban yang lebih menyeluruh tampaknya dibenarkan.

Jika Anda menggunakan ini:

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

Anda menerapkan salah satu fungsi yang menambahkan tag ayat untuk isi posting. wpautop()adalah salah satu dari banyak fungsi (termasuk Plugin fungsi di kali) yang kait ke the_content, jadi jika Anda melakukan hal ini:

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

Anda mendapatkan posting konten run melalui filter pada the_contentyang meliputi wpautop()secara default.

Akhirnya, jika Anda berada di loop, Anda hanya dapat melakukan ini:

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

yang pada dasarnya adalah pembungkus untuk potongan kode kedua, tapi tentu saja itu terlihat lebih bagus. Update 1 Sep 2018: Revisi berdasarkan komentar . Props @timmb.

Secara umum, saya akan mengatakan bahwa lebih suka "jalan yang benar" untuk melakukan ini adalah dari terakhir untuk pertama sejak menggunakan fungsi WP inti harus memungkinkan lebih banyak kompatibilitas mundur (secara teoritis, setidaknya). Satu-satunya keputusan lain untuk dibuat adalah apakah Anda ingin mengizinkan WordPress dan plugin juga memodifikasi konten posting. Jika demikian, gunakan opsi ke-2 atau ke-3.

mrwweb
sumber
1
Saya pikir solusi akhir ini salah. Dari codex.wordpress.org/Function_Reference/get_the_content : "Sebuah perbedaan penting dari the_content () adalah bahwa get_the_content () tidak lulus konten melalui 'the_content' filter." Apakah ini tidak menyarankan pendekatan yang tepat $content = apply_filters('the_content', get_the_content);?
Tim MB
7

Menemukan solusinya:

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

Metode kedua untuk mendapatkan konten posting dengan tag p adalah

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