มีวิธีการรับเนื้อหาจากนอกวงหรือไม่ ID คือ 302 และฉันต้องแสดงเนื้อหาของหน้านั้นในหน้าอื่น
มีวิธีการรับเนื้อหาจากนอกวงหรือไม่ ID คือ 302 และฉันต้องแสดงเนื้อหาของหน้านั้นในหน้าอื่น
คำตอบ:
get_page()
เพื่อส่งคืน$post
วัตถุของหน้าคงที่:$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;
ในทำนองเดียวกันคุณสามารถใช้get_post()
เพื่อส่งคืน$post
วัตถุของโพสต์:
$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
setup_postdata( $post );
ครั้งแรกหลังจากนั้นคุณสามารถใช้the_content();
apply_filters( 'the_content', $post_object->post_content );
เพื่อรับเนื้อหาของโพสต์ภายนอกลูปคุณสามารถเขียนสิ่งนี้
global $post;
$content = $post->post_content;
if ( !empty( $content ) ) :
echo $content;
endif;
หากเนื้อหาของคุณมีรหัสย่อคุณควรใช้:
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
do_shortcode
นอกเหนือจากการพูดว่า "มันอาจช้า" และ "คุณสามารถใช้ฟังก์ชั่นที่เรียกรหัสสั้น ๆ " เหตุผลเหล่านั้นใช้ได้เฉพาะกับสิ่งเล็กน้อยที่สุดสำหรับสถานการณ์ที่ง่ายที่สุดเท่านั้น มันล้มเหลวเมื่อมีการสร้างรหัสย่อที่อื่นหรือหากมีหลายรหัสย่อหรือรหัสย่อผสมกับเนื้อหาและมาร์กอัปอื่น ๆ do_shortcode
โดยไม่ต้องมีเหตุผลที่น่าสนใจผมจะไม่เห็นด้วยกับคำสั่งที่จะหลีกเลี่ยง นี้มีกลิ่นเหมือนการเพิ่มประสิทธิภาพก่อนวัยอันควร
เพื่อความสมบูรณ์การสร้างความคิดเห็นของทิมข้างต้นและได้รับแรงบันดาลใจจากบทความของ Stephen Harrisวิธีการแก้ปัญหาที่ทำให้สามารถใช้งานได้the_content()
คือ:
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
และด้วยเหตุนี้ตัวกรองจึงถูกนำไปใช้ (ย่อหน้าจะถูกแทรก ฯลฯ ) และรหัสย่อทำงานได้
เนื่องจากคุณทราบ ID โพสต์เป้าหมายของคุณ (302) คุณอาจพบว่ามีประโยชน์กับไวยากรณ์ชวเลขนี้ที่คุณสามารถใช้จากลูป (แม้ว่าประสิทธิภาพจะค่อนข้างเหมือนกับในวิธีอื่น ๆ :)
echo(get_post_field('post_content',302));
คุณสามารถใช้get_post_data()
ฟังก์ชั่นเพื่อโพสต์นอกวง วางรหัสนี้ใน functions.php
function get_post_data($postId) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID=$postId");
}
จากนั้นเพิ่มตัวอย่างนี้เพื่อควบคุมกระบวนการได้มากขึ้น
<?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
?>
คุณสามารถใช้วิธีแก้ปัญหาด้วยget_post
และ$post_object->post_content
แต่อย่าลืมเพิ่มการตรวจสอบก่อนที่คุณจะใช้วัตถุที่โพสต์:
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 );
คุณสามารถโทรหา get_the_content (postId)
<?php echo get_the_content($postId); ?>
ใช้wp_reset_postdata();
มันจะทำงาน .. (แก้ไข)
<?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();
?>
ประเภทโพสต์สามารถเป็น "โพสต์", "หน้า" หรือประเภทโพสต์ที่กำหนดเองของคุณ ที่นี่ p = 302 เป็นรหัสโพสต์ของคุณหวังว่ามันจะใช้ได้
query_posts
จนกว่าคุณจะต้องทำลายฟังก์ชันการใช้งาน ใช้WP_Query
หรือget_posts
สำหรับข้อความค้นหาที่กำหนดเองทุกครั้ง :-)
pre_get_posts
the_post
รายละเอียดมากมาย
คุณสามารถใส่เนื้อหาในหมวดหมู่ X และใช้ query_post ก่อนหน้านี้ได้เช่นนี้:
<?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/…