Câu trả lời:
get_page()
để trả về $post
đối tượng của trang tĩnh:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Tương tự, bạn có thể sử dụng get_post()
để trả về $post
đối tượng của bài đăng:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
trước, sau đó, bạn có thể sử dụngthe_content();
apply_filters( 'the_content', $post_object->post_content );
để có được nội dung của bài viết bên ngoài vòng lặp, bạn có thể viết một cái gì đó như thế này
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Nếu nội dung của bạn bao gồm mã ngắn, bạn nên sử dụng:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
ngoài việc nói, "Nó có thể chậm" và "Bạn chỉ có thể sử dụng chức năng mà mã ngắn gọi." Những lý do đó chỉ có giá trị cho tầm thường nhất cho các kịch bản đơn giản nhất. Không thành công khi shortcode được tạo ở một nơi khác hoặc nếu có nhiều mã ngắn hoặc mã ngắn được trộn lẫn với nội dung và đánh dấu khác. Nếu không có lý do thuyết phục, tôi sẽ không đồng ý với tuyên bố cần tránh do_shortcode
. Điều này có mùi như tối ưu hóa sớm .
Để hoàn thiện, dựa trên nhận xét của Tim ở trên và lấy cảm hứng từ bài viết của Stephen Harris , giải pháp cho phép sử dụng the_content()
là:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
Và do đó, các bộ lọc được áp dụng (các đoạn sẽ được chèn, v.v.) và mã ngắn hoạt động.
Vì bạn biết ID bài đăng mục tiêu của mình (302), bạn có thể thấy cú pháp tốc ký này hữu ích mà bạn có thể sử dụng ngoài vòng lặp (mặc dù hiệu suất của nó khá giống với bất kỳ phương pháp thay thế nào khác :)
echo(get_post_field('post_content',302));
Bạn có thể sử dụng get_post_data()
chức năng để có được bài viết bên ngoài vòng lặp. Đặt mã này trong Hàm.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
và sau đó thêm đoạn mã này để kiểm soát nhiều hơn về quy trình
<?php $data = get_post_data(302);
echo $data->post_date; // post date
echo $data->post_title; // post title
echo $data->post_content; // post content
echo $data->comment_count; // comments number
?>
Bạn có thể sử dụng, như đã nói, giải pháp với get_post
và $post_object->post_content
, nhưng đừng quên thêm một kiểm tra trước khi bạn sử dụng đối tượng bài đăng đó:
function get_post_content( $post_id = null ) {
$post_object = get_post( $post_id );
if ( ! $post_object ) { return ''; }
//else
return apply_filters('the_content', $post_object->post_content);
}
echo get_post_content( $other_post_id );
Bạn chỉ có thể gọi get_the_content (postId)
<?php echo get_the_content($postId); ?>
sử dụng wp_reset_postdata();
nó sẽ hoạt động .. (chỉnh sửa)
<?php
$args = array(
'post_type' => 'posttype',
'p' => 'post_id'
);
$the_query = new WP_Query( $args );
if( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif;
wp_reset_postdata();
?>
posttype có thể là "bài", "trang" hoặc loại bài đăng tùy chỉnh của bạn. Ở đây p = 302 là id bài viết của bạn .. Hy vọng nó sẽ hoạt động.
query_posts
trừ khi bạn cần phá vỡ các chức năng trang. Luôn sử dụng WP_Query
hoặc get_posts
cho các truy vấn tùy chỉnh :-)
pre_get_posts
bộ lọc, và the_post
. Rất nhiều chi tiết.
bạn có thể đặt nội dung trong danh mục X và sử dụng query_post trước khi như thế này:
<?php query_posts('cat=X&showposts=1'); ?>
<?php while (have_posts()) : the_post(); ?>
<?= get_the_content(); ?>
<?php endwhile; ?>
get_queried_object_id()
! developer.wordpress.org/reference/groupes/wp_query/ từ