プログラミングに関する情報を中心に、デザイン、ライフハックなどの記事を更新していくブログです。

ユウマのブログ

〜 無料体験可能なプログラミングスクールはコチラ 〜

WordPress

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

-WordPress

© 2021 ユウマのブログ