通常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つの関数を思い出してみて下さい!