ワードプラスの個別の投稿のコンテンツなどは、while(have_posts()): the_post(); という処理で取得されますが、このループ外でページや投稿のコンテンツやIDを取得するPHPコードをご紹介いたします。


ワードプレスの投稿やページのIDを取得する

ワードプレスの投稿は一般的にはループと呼ばれる処理の中で取得処理されます。

if (have_posts()) :
    while ( have_posts() ) : the_post();
        $post_id = get_the_ID();
    endwhile;
endif;

このループ外で投稿のIDを取得するコードは下記のようになります。
※このコードは投稿やページを表示するテーマのコード(single.php,post.php)や単一の投稿やページを表示する処理の前後でしか動作しませんのでご注意ください

global $wp_query;
$post_id = $wp_query->get_queried_object_id();

またこのIDから、コンテンツを取得して何らかの処理を行うことも可能です。

global $wp_query;
$post_id = $wp_query->get_queried_object_id();

$content = get_post_field( 'post_content', $post_id ); //1
$content = apply_filters( 'the_content', get_post_field( 'post_content', $post_id ) ); //2

1で投稿IDから、投稿のコンテンツのデータを取得します
2でショートコードやコンテンツ関連のプラグイン等の処理を実行させます

この結果$contentに投稿や固定ページのコンテンツが生成されて代入されます。

WordPress ワードプレスの修正やカスタマイズのご依頼・ご相談はWPドクターまでお気軽にお送りください