完成サイト
現在取り組み中のサービスサイトのWordPress課題。ヘッダーメニューのBLOG &NEWSのリンクをクリックするとWordPressからの投稿記事が一覧になって表示されるような構成になっている。
つまづいた点
今回、ヘッダーナビ部分(CONCEPT・MENU・SHOPLIST・BLOG&NEWS)を固定ページに設定し、BLOG&NEWSをクリックすると管理画面から投稿された記事が一覧となって表示される…はずなのに表示されない現象に陥った…。
トップページの投稿一覧には管理画面からの情報が表示されるのに、BLOG&NEWSでは一覧が表示されない。トップページと同じ表示でループの形も同じなはずなのになぜ?と悩みました。
解決の糸口
そもそも、この時点で管理画面から投稿していたのは1記事のみで投稿日時をいじって2023年にしていたのに、なぜ投稿もしていない2024/4/6日のこのページのタイトルが表示されるのか?そこが、今回の一番の謎…。
しかし、色々いじっている際に、たまたまある瞬間、普通に投稿記事の一覧が反映された瞬間が!
このことをきっかけに、もしかして、今日更新したこのページのタイトルと日時がこの部分に反映されているのかも!?と考えるように。
固定ページに投稿一覧を表示する方法
そこで色々調べた結果、固定ページで投稿一覧を表示させるためにはサブループを使用しなければならない、ということ。
これ、恐らくテキストでやっていてわからなかったメインクエリというやつで、固定ページには固定ページのWordPressループがあるのだと理解できた。なので、サブループで投稿の情報を引っ張り出してやらなければならない!
今回、書いて成功したコードはこれ。
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => -1
);
$the_query = new WP_Query($args);
?>
<?php if ($the_query->have_posts()) : ?>
<?php while ($the_query->have_posts()) : $latest_query->the_post(); ?>
/*ループ内の記述*/
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
ポイントは以下
- post_typeは’post’にする(通常投稿なので)
- posts_per_pageには表示したい投稿数を指定(全件だと-1)
- $the_queryは任意の名前でOK($newsなど)
- 最後のwp_reset_postdataは忘れずに書く
やってみないとわからないことがまだまだたくさんのWordPress。道のりは長い。