回答:
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 );
コンテンツにショートコードが含まれている場合は、次を使用する必要があります。
$post_id = 22;
$post_object = get_post( $post_id );
echo do_shortcode( $post_object->post_content );
完全を期すために、上記のTimのコメントに基づいて、Stephen Harrisの記事に触発されて、使用できるソリューションthe_content()
は次のとおりです。
$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );
したがって、フィルターが適用され(段落が挿入されるなど)、ショートコードが機能します。
この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();
?>
posttypeは、「post」、「page」、またはカスタムの投稿タイプです。ここで、p = 302は投稿IDです。うまくいくことを願っています。
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/...