Bootstrap Skip to main content
Use code LAMVT for an extra 10% off!

From the Firehose

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 header_4_php
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

About

Chào bạn, mình là Vũ Thành Lâm.
Tri Thức là Sức Mạnh, Tri thức không của riêng ai, hãy chia sẻ nó!

Recent posts