Jawaban:
get_page()
untuk mengembalikan $post
objek halaman statis:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
Demikian pula, Anda dapat menggunakan get_post()
untuk mengembalikan $post
objek posting:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
dulu, setelah itu, Anda bisa menggunakanthe_content();
apply_filters( 'the_content', $post_object->post_content );
untuk mendapatkan konten dari pos di luar loop Anda dapat menulis sesuatu seperti ini
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
Jika konten Anda menyertakan kode pendek, Anda harus menggunakan:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
selain mengatakan, "Ini mungkin lambat" dan "Anda bisa menggunakan fungsi yang dipanggil oleh kode pendek." Alasan-alasan itu hanya berlaku untuk skenario yang paling sepele untuk skenario paling sederhana. Gagal saat kode pendek dibuat di tempat lain, atau jika ada beberapa kode pendek, atau kode pendek dicampur dengan konten dan markup lainnya. Tanpa alasan kuat, saya tidak setuju dengan pernyataan itu untuk dihindari do_shortcode
. Baunya seperti optimasi prematur .
Untuk kelengkapan, membangun komentar Tim di atas dan terinspirasi oleh artikel Stephen Harris , solusi yang memungkinkan penggunaan the_content()
adalah:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
Dan karenanya filter diterapkan (paragraf akan dimasukkan dll.) Dan shortcode bekerja.
Karena Anda tahu ID posting target Anda (302), Anda mungkin menemukan sintaks singkatan yang berguna ini yang dapat Anda gunakan di luar loop (meskipun kinerjanya hampir sama dengan metode alternatif lainnya :)
echo(get_post_field('post_content',302));
Anda dapat menggunakan get_post_data()
fungsi ini untuk mendapatkan posting di luar loop. Tempatkan kode ini di functions.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
lalu tambahkan potongan ini untuk kontrol lebih besar pada proses
<?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
?>
Anda dapat menggunakan, seperti yang dikatakan, solusi dengan get_post
dan $post_object->post_content
, tetapi jangan lupa untuk menambahkan tanda centang sebelum Anda menggunakan objek posting itu:
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 );
Anda cukup memanggil get_the_content (postId)
<?php echo get_the_content($postId); ?>
menggunakannya wp_reset_postdata();
akan bekerja .. (diedit)
<?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 dapat berupa "posting", "halaman" atau jenis posting khusus Anda. Di sini p = 302 adalah id posting Anda .. Semoga ini akan berhasil.
query_posts
kecuali Anda perlu merusak fungsi halaman. Selalu gunakan WP_Query
atau get_posts
untuk permintaan khusus :-)
pre_get_posts
filternya, dan the_post
. Sangat detail.
Anda dapat menempatkan konten dalam kategori X dan menggunakan query_post sebelumnya sambil seperti ini:
<?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/classes/wp_query/…