Lấy nội dung WordPress post bằng post id
Contents
Câu hỏi
Làm cách nào để lấy nội dung WordPress post theo post id?
m3tsys
Câu trả lời chính xác nhất
Rất đơn giản
$my_postid = 12;//This is page id or post id
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters(‘the_content’, $content);
$content = str_replace(‘]]>’, ‘]]>’, $content);
echo $content;
Câu trả lời của Bainternet
Viết tắt cho trường cụ thể: $content = get_post_field(‘post_content’, $my_postid); – Rarst
@Bainternet Tôi chỉ tò mò một chút ở đây … Phần $content = str_replace(‘]]>’, ‘]]>’, $content); có nhiệm vụ gì ở đây? – Average Joe
@AverageJoe Nó là tìm kiếm và thay thế cơ bản. Khi sử dụng the_content() thì nội dung được lọc. Vì trong ví dụ trên, nội dung được lấy trực tiếp, và để an toàn hơn anh ấy đã dùng tìm kiếm và thay thế. – Harish Chouhan
Có lẽ bạn cũng cần do_shortcode() giống như $content = do_shortcode(get_post_field(‘post_content’, $my_postid)); – cyptus
Có cách nào để bảo vệ more_link không? – user2128576
echo get_post_field(‘post_content’, $post_id);
Câu trả lời của realmag777
Sẽ tốt hơn nếu làm như thế này echo apply_filters(‘the_content’, get_post_field(‘post_content’, $post_id)); Ví dụ khi sử dụng qTranslate, giải pháp của bạn sẽ không đủ. – Karel Attl
Đây là câu trả lời tốt nhất trong trường hợp lấy nội dung post khi nó đang ở trang chỉnh sửa (edit page) của WordPress. – mcont
Nếu không có code của @KarelAttl, dòng sẽ ngắt ở những nơi bị trống. Với code apply_filters, mọi thứ làm việc hoàn hảo. – Alexander Taubenkorb
apply_filters là một lựa chọn tốt, nhưng nó không đúng với mục đích hiện tại của tôi. Có hai lựa chọn là điều tốt. – KnightHawk
Đã có hai câu trả lời cho câu hỏi này rồi. Tôi sẽ đóng góp một cách khác để lấy nội dung WordPress post th)eo post id.
$content=apply_filters(‘the_content’, get_post_field(‘post_content’, $my_postid));
Để cho câu trả lời được hoàn thiện, tôi thêm vào đây phương pháp 01 và 02:
Phương pháp 01 (giống như câu trả lời của bainternet):
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters(‘the_content’, $content);
$content = str_replace(‘]]>’, ‘]]>’, $content);
Phương pháp 02 (giống như câu trả lời của realmag777):
$content=get_post_field(‘post_content’, $my_postid);
Phương pháp 03:
$content=apply_filters(‘the_content’, get_post_field(‘post_content’, $my_postid));
Hãy đọc bài What is the best / efficient way to get WordPress content by post id and why? để biết nên dùng cái nào trong ba phương pháp ở trên.
Câu trả lời của Ranuka
Nếu bạn cần lấy nhiều hơn một post thì hãy dùng get_posts(). Nó để lại một mình truy vấn chính và trả về một mảng các bài viết, đó là một vòng lặp đơn giản.