通常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を指定してページを取得し、取得した情報からpage_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つの関数を思い出してみて下さい!