開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

WordPressで、タイトルや本文がなぜか表示されない?

最終更新:2017-05-17 by Joe

WordPressで、the_content()、the_title()が表示されない時、(たぶん)あなたはWordpressのループの概念を知る必要があります。

それではまいります・・。

なぜうまく行かないのか?

(たぶん)the_content()関数内で、参照している投稿IDと、あなたが表示したい投稿のIDが、食い違っています。

the_content()にIDを渡せないのか?

渡すことはできません。the_xxxxx系の関数の多くは、おもに「メインループ」の中で使われる事が意図されている関数です。

メインループ無いでは、投稿IDは一意に決まります。

メインループとは何か?

while( have_posts() ) { }で囲まれるループです。

ループ内で、投稿IDはどうやって決まるのか?

ループ内に必ず実行される、「the_post()」関数に依って決まります。the_posts関数内で、投稿オブジェクトの配列の参照をインクリメントします。

どうすれば、うまく投稿本文を表示できますか?

もしget_postsで取得した、投稿オブジェクト配列ならこのように。

3種類やりかた書きますが、2と3は似ています。the_contentにひもづいている、wp_autop()などのフィルターが実行されますので。

 

もしQuery オブジェクトなら

 

どちらも、あとで、メインクエリの投稿を参照したければ、wp_reset_postdata()を実行するのを忘れずに。

このへんは、入門者にはわかりにくいですよね。とりあえず方法論だけ。リクエストがアレば、解説もかきます。

参考

  • https://codex.wordpress.org/Function_Reference/wp_reset_postdata
  • https://codex.wordpress.org/Function_Reference/setup_postdata