Vũ Thành Lâm

Lấy nội dung WordPress post bằng post id

5/5 - (1 bình chọn)

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

Lấy nội dung WordPress post bằng post id

@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.

Câu trả lời của DigitalDesignDj

Exit mobile version