Làm cách nào để có được 'post_content' mà không tước thẻ <p>?


20

Tôi đang cố gắng truy xuất nội dung bài đăng của một bài đăng cụ thể:

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

Tuy nhiên, điều này lấy nội dung không có ngắt dòng và bỏ qua tất cả <p>các thẻ.

Cách thích hợp để truy xuất nội dung bài đăng mà không tước <p>thẻ (vì nó được hiển thị trên trang bài đăng hoặc tab " Văn bản " của trình chỉnh sửa bài đăng )?

Câu trả lời:


30

Cả hai câu trả lời cho đến nay đều đúng nhưng một câu trả lời kỹ lưỡng hơn dường như được bảo đảm.

Nếu bạn sử dụng điều này:

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

bạn đang áp dụng một chức năng thêm thẻ đoạn văn để đăng nội dung. wpautop()là một trong nhiều chức năng (bao gồm cả chức năng plugin đôi khi) nối vào the_content, vì vậy nếu bạn làm điều này:

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

bạn đang nhận được nội dung bài đăng chạy qua bất kỳ bộ lọc the_contentnào bao gồm wpautop()theo mặc định.

Cuối cùng, nếu bạn đang ở trong vòng lặp, bạn có thể thực hiện việc này:

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

về cơ bản là một trình bao bọc cho đoạn mã thứ hai, nhưng tất nhiên nó trông đẹp hơn một chút. Cập nhật ngày 1 tháng 9 năm 2018: Sửa đổi dựa trên nhận xét . Đạo cụ @timmb.

Nói chung, tôi muốn nói rằng "cách đúng" ưa thích để thực hiện việc này là từ cuối đến trước vì sử dụng chức năng WP lõi sẽ cho phép khả năng tương thích ngược nhiều hơn (ít nhất là về mặt lý thuyết). Quyết định duy nhất khác được đưa ra sau đó là liệu bạn có muốn cho phép WordPress và plugin cũng sửa đổi nội dung bài đăng hay không. Nếu đó là trường hợp, chắc chắn sử dụng các tùy chọn thứ 2 hoặc thứ 3.


1
Tôi nghĩ rằng giải pháp cuối cùng này là không chính xác. Từ codex.wordpress.org/Function_Reference/get_the_content : "Một điểm khác biệt quan trọng so với the_content () là get_the_content () không chuyển nội dung qua bộ lọc 'the_content'." Điều này sẽ không đề xuất cách tiếp cận chính xác sẽ được $content = apply_filters('the_content', get_the_content);?
Tim MB


4

Phương pháp thứ hai để có được nội dung bài đăng với thẻ p là

echo wpautop( $post->post_content );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.