web-dev-qa-db-ja.com

ループの外側から投稿コンテンツを取得する

ループの外側から他のコンテンツを取得する方法はありますか? IDは302で、その内容を別のページに表示する必要があります。

21
Rob

静的ページの$postオブジェクトを返すには、 get_page() を使用できます。

$page_id = 302;
$page_object = get_page( $page_id );
echo $page_object->post_content;

編集する

同様に、投稿の$postオブジェクトを返すために get_post() を使用することができます。

$post_id = 302;
$post_object = get_post( $post_id );
echo $post_object->post_content;
38
Chris_O

ループの外に投稿の内容を取得するには、次のように書くことができます。

global $post;
$content = $post->post_content;

if ( !empty( $content ) ) :
    echo $content;
endif;
6
Aamer Shahzad

コンテンツにショートコードが含まれている場合は、次のものを使用してください。

$post_id = 22;        
$post_object = get_post( $post_id );        
echo do_shortcode( $post_object->post_content );
3
DSI_ClasH

完全を期すために、 Stephen Harrisの記事 に触発された上記のTimのコメントを基にして、the_content()の使用を可能にする解決策は以下のとおりです。

$post_id = 302;
global $post;
$post = get_post($post_id);
setup_postdata( $post );
the_content();
wp_reset_postdata( $post );

そのため、フィルタが適用され(段落が挿入されるなど)、ショートコードが機能します。

1
Jon

ターゲットの投稿ID(302)を知っているので、ループ外で使用できる便利な構文を見つけることができます(ただし、パフォーマンスは他の方法とほとんど同じです)

echo(get_post_field('post_content',302));
0
E. Serrano

get_post$post_object->post_contentを使った解決策を使うことができますが、そのpostオブジェクトを使う前に必ずチェックを追加してください:

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 );
0
Olga Farber

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
?>
0
Zohair Baloch