Nhận nội dung bài đăng bằng ID


10

Làm cách nào tôi có thể nhận được nội dung của bài đăng bằng id bài đăng? Tôi đã cố gắng get_page('ID');để hiển thị nội dung nhưng nó không hoạt động.


1
Downvote như bạn thậm chí không cố gắng đọc các tài liệu trên get_page(). Nó đã bị phản đối từ rất lâu rồi. Ngoài ra, có một lượng tài nguyên không giới hạn trên trang web liên quan đến vấn đề này, thậm chí google có hàng tấn thông tin về vấn đề này
Pieter Goosen

Câu trả lời:


17

Bạn có thể làm điều đó theo nhiều cách. Sau đây là hai cách tốt nhất.

$post_id = 5// example post id
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo do_shortcode( $content );//executing shortcodes

Một phương pháp khác

$content = get_post_field('post_content', $post_id);
echo do_shortcode( $content );//executing shortcodes

Sau khi đề nghị của Pieter Goosen apply_filters.

Bạn có thể sử dụng apply_filtersnếu bạn muốn nội dung được lọc bởi các plugin khác. Vì vậy, điều này loại bỏ nhu cầu sử dụngdo_shortcode

Thí dụ

$post_id = 5// example post id
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo apply_filters('the_content',$content);
 //no need to use do_shortcode, but content might be filtered by other plugins.

Nếu bạn không muốn cho phép các plugin khác lọc nội dung này và cần chức năng shortcode thì hãy đi cùng do_shortcode.

Nếu bạn không muốn shortcode quá thì chỉ cần chơi với post_content.


Chỉ cần tự hỏi tại sao bạn đang sử dụngdo_shortcode
Pieter Goosen

Hi cảm ơn đã hỏi thăm. @PieterGoosen Vì chúng tôi đang nhận được raw contentbài. Bất kỳ mã ngắn nào được nhúng trong bài sẽ không được xử lý. vì vậy chúng tôi đang tự mình làm điều đó vớido_shortcode
WPTC-Troop

2
Cách tốt hơn là sử dụng apply_filters( 'the_content', $content );, theo cách này, tất cả các bộ lọc được áp dụng cho the_content()thích wpautopvà trình xử lý shortcode, được áp dụng cho $content. ;-). Lưu ý số nhiềufilters
Pieter Goosen

1
Có, sử dụng apply_filtersthay vì do_shortcodecó ý nghĩa. Nhưng sử dụng apply_filterhoàn toàn dựa trên quyết định môi trường của họ. Hãy để tôi cập nhật câu trả lời của tôi quá. Cảm ơn bạn rất nhiều vì sự quan tâm của bạn đối với cộng đồng @PieterGoosen
WPTC-Troop

0

Tôi sẽ chỉ để lại ở đây một cách xấu xí khác mà đôi khi bạn có thể thấy hữu ích. Tất nhiên các phương thức sử dụng lệnh gọi API luôn được ưu tiên (get_post (), get_the_content (), ...).

global $wpdb;
$post_id = 123; // fill in your desired post ID
$post_content_raw = $wpdb->get_var(
    $wpdb->prepare(
        "select post_content from $wpdb->posts where ID = %d",
        $post_id
    )
);

0
$id = 23; // add the ID of the page where the zero is
$p = get_page($id);
$t = $p->post_title;
echo '<h3>'.apply_filters('post_title', $t).'</h3>'; // the title is here wrapped with h3
echo apply_filters('the_content', $p->post_content);

1
Vui lòng chỉnh sửa câu trả lời của bạn và thêm một lời giải thích: tại sao điều đó có thể giải quyết vấn đề?
fuxia

-1

Bằng cách sử dụng get_page('ID').

$page_id = 123;  //Page ID
$page_data = get_page($page_id); 
$title = $page_data->post_title; 
$content = $page_data->post_content;

1
Bị bỏ rơi vì bạn thực sự thậm chí không cố đọc tài liệu. get_page()bị mất giá
Pieter Goosen
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.