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.