【図解】WordPressの投稿表示で思った投稿が表示されない時に意識するべきこと

Webサイト制作
Web開発
2021.11.30

WordPressのカスタマイズを行っている時に、自分の思っている投稿データが正しく表示されない、といった経験は無いでしょうか。
Web上にあるPHPのソースコードを切り貼りしてカスタマイズしていると、そういった状況に出会うことがあると思います。
そんな時、何が原因なのかを考える際に知っておくと良い知識を本記事では紹介したいと思います。

データの取得方法を意識する

投稿データする際に記述する処理は大きく以下の流れで行うと思います。

基本的に1は意識する事なく、2の記述だけで投稿は表示できるようにWordPressは作られています。

しかし、サイトをカスタマイズして行く中で投稿データを選んだり絞り込んだりして表示したい事もあります。
その時に初めて、1について考える必要が出てきます。

ここで注目してほしいのはWP_Queryを書き換えるものと書き換えないものがあるという点です。
WP_Queryは、メインクエリと記述されている場合も多いですので、本記事ではメインクエリと記述させて頂きます。
それではメインクエリを書き換えるとはどういうことなのか、それを次項で説明したいと思います。

メインクエリを意識する

メインクエリの基本動作

以下の図が、WordPressが投稿データを表示するときのデータのイメージです。

このうち、赤枠に囲われた部分はWordPressが自動的に行なってくれています。
そのため、前項で触れたようにデータの取得を意識せずとも投稿データの確認や取得を行うことができます。

メインクエリの書き換える場合

では、メインクエリを書き換えるとどういう事が起きるのかを図にしてみます。

この場合はまずメインクエリが実行され、その後に書き換えられたメインクエリが再度実行されます。
そのため、WordPressが自動的に取得した投稿データに対して上書きを行います。
そのページで表示したい投稿がはっきりと決まっている場合はこれでも問題ありません。
しかし、自動的に実行されるメインクエリは止めることはできないので、実質2回メインクエリが実行されることになります。
サイトの作成時にはあまり気にならないかもしれませんが、サイトが大きくなり記事が増えてくるとそのぶん取得する記事数も多くなります。
取得データの多さはサイトの表示速度にも影響するので、記事が多くなる見込みがある場合はなるべく避けたほうが良いかもしれません。
また、ページを構成するファイルが複数ある場合にも問題が発生する場合があります。
こちらは次項で紹介したいと思います。

メインクエリの書き換えない場合

それでは次にメインクエリを書き換えない場合の図です。

こちらはメインクエリを使わずに別途データを取得しているため、メインクエリで取得したデータは書き換えられません。
ただし、取得した投稿データを扱うためのhave_posts()やthe_posts()等の命令が使えません。
投稿データを扱うには変数や配列の知識が必要になります。

どちらの方法にもメリット・デメリットがあるので、使いたいデータの内容に合わせて使い分けることが大切です。

ページを構成しているソースファイルを意識する

複数ファイルで構成されるページの場合

前項で紹介した、メインクエリを書き換える方法を行う際には、書き換えを行う処理を書くファイルにも注意が必要です。
WordPressのページは以下の図のように複数のphpファイルで構成されています。

メインクエリはひとつのページに対して最初に一回実行されますが、投稿データへのアクセスは複数のPHPファイルからアクセスすることになります。
つまり、上記の図でsingle.phpで投稿データを書き換えた場合、footer.phpで取得できる投稿データは書き換わったものになります。
書き換わっていることがきちんと把握できていれば問題ありませんが、例えばそれぞれのファイルを違う人が編集したりする場合は、何が原因でデータが書き換わったのかわからないことにもなるので気をつける必要があります。

まとめ

今回はWordPressがデータを取得するタイミングや方法についてを説明しました。
これらのことを把握することで、思ったように投稿データが表示されない場合の原因究明のヒントになると思います。
また、WordPressを理解するにあたってひとつのステップアップの材料になれば幸いです。

SEOやWEB制作に関する情報を検索する

コラム

ピックアップコラム

最新コラム

人気コラム

過去の記事

ご質問やご相談などお気軽にお問い合わせください。

お電話でのお問い合わせはこちら

03-5829-9912

受付時間:平日10:00~19:00(土・日・祝日を除く)