【WP】特定の投稿・個別ページの内容をループ外から呼び出す方法

ループ外から特定ページを呼び出す方法

通常WordPressで投稿・個別ページを出力するには、while(have_posts()): the_post();のループ内でthe_content()関数を使えばいいのですが、ループ外から特定のページを呼び出したい場合はどうすれば良いのでしょうか?

当記事では、特定の投稿・個別ページの内容をループ外から呼び出す為の、下記の3つの関数を解説します。

  • get_post()
  • get_post_field()
  • apply_filters()
目次

get_post()

今回解説する関数の中で、一番回りくどいやり方です。

get_post()関数を使って特定のページを呼び出すには、下記の様に記述する必要があります。

<?php
    $page = get_post(11); //「11」はページID
    echo $page->post_content;
?>

流れとしては、初めにget_post()でページIDを指定してページを取得し、取得した情報からpost_contentで本文を抜き出しているという感じです。

ただしこの方法だと、本来WordPress側で自動加工してくれるはずの箇所や、導入しているプラグイン(目次など)が反映されません。

get_post_field()

get_post_field()関数を利用すると、get_post()と同様の効果を1行で実現できます。

get_post_field()関数は下記の様に記述します。

<?php get_post_field( 'post_content', 11 ); //「11」はページID ?>

1行で簡潔に記述することができるので便利ですが、こちらもget_post()を用いる方法と同様で、自動加工や導入済みプラグインの反映がされません。

apply_filters()

apply_filters()関数を使うことで、フィルターフックに追加された関数を呼び出すことができます。

簡単に説明するなら、加工された本来の姿でページ本文のデータを取得してくれるよ!ということです。

apply_filters()関数は下記の様に記述します。

<?php apply_filters('the_content', get_post_field( 'post_content', 11 )); //「11」はページID ?>

最後に

基本はループ内でthe_content()関数を使えばいいだけですが、もしループ外で特定ページを呼び出す時が来たら、今回解説した3つの関数を思い出してみて下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Webベンチャー企業で働くエンジニア | 効率化のためのツール開発とかが好きな人 | ブログ最高月間収益18万 | 千葉県1995年11月生まれ | 当ブログでは「プログラミング・デザイン・ブログ」に関する内容を中心に、役立つ情報を発信します

目次