【ワードプレス】該当記事がない場合の対処方法!代わりのコンテンツを表示させるには?

ワードプレスでは「カテゴリー別」「月別」などの記事を一覧表示させる機会はよくあります。しかし、たまたまその月は記事を書いていなかったり、カテゴリーは作ったけど中身はまだ作っていないなどの場合、該当するページがないと何も表示されずにちょっと不恰好な表示になることがあります。


コンテンツのないページ

これを避けるために、該当ページがない場合は他のコンテンツを表示させる方法をご紹介します。

ここから先はちょっとPHPやHTMLの知識が必要となります。



ワードプレスの基本的なループ処理構造



まずはワードプレスの基本的なループ処理の構造です。

<?php if ( have_posts() ) : ?>
	<?php while ( have_posts() ) : the_post(); ?>    
	<!-- ここに投稿された記事がループされる -->
	<?php endwhile; ?>
<?php endif; ?>

ループ処理の流れ

① 初めの「if ( have_posts() ) :」の「have_posts()」で記事があるかどうかをチェックしています。


② もし、記事があれば「while ( have_posts() ) : the_post();」の行に移ります。


③ while文 → (条件が当てはまる間処理を繰り返す=記事が存在する限りループを続ける。)


④ 「the_post();」は、先程のwhileで繰り返している時の記事情報を取得しています。その時グローバル変数の$postに記事の情報が保存されます。(深く考えなくてもOKです)


⑤ 「endwhile;」と「endif;」でwhileとifを終了します。


ざっくり言うと、「もし記事があるなら記事がある限り表示してね」と命令しているわけです。





条件を分岐させる


ここまでで基本的なループの流れは理解していただけたと思います。

今回のテーマは、もし該当する記事がない場合の対処法です。

該当記事がない場合、サイドバーやヘッダー・フッターは表示されますが、以下のように中身は空白のページが表示されてしまいます。


記事が存在しない時の表示

これを回避する答えは意外と単純です。

記事が存在しない場合のみ代わりのコンテンツ(文字や画像など)を表示させるようにしておけば問題解決です。

では、どこにその代わりのコンテンツを準備するのか?というと、先程ループの基本形をご紹介しましたが、そこに「記事が存在しなければ~」というコードを追加すればOKです。


追加する部分は、

<?php if( have_posts()): while( have_posts()): the_post(); ?>
     ここに該当記事がある場合に表示するHTMLとPHPを書く
<?php endwhile; else: ?>
     ここに該当記事がない場合に表示するHTMLとPHPを書く
<?php endif; ?> 

<?php endwhile; else: ?> から <?php endif; ?> の間に追加します。

この<?php endwhile; else: ?> から <?php endif; ?> の間に「該当の記事はありません」などの文字や画像を記述しておけば空白を避けられますね。

また、該当記事がある場合とない場合のレイアウトは統一しておくほうが管理が楽です。


まとめ

今回は条件分岐を使い、該当ページの有無によって表示させる内容を変更するというシンプルな方法をご紹介しました。

サイトの一覧ページなどでは、月毎のお知らせや記事などを表示させる機会が多いですが、たまたま何のお知らせも更新もなかった月が存在してしまうとこの現象が起こり得ます。この方法はちょっとコードを書き換えるだけなのでお手軽に使えますよ♪




【おすすめの記事】

↓↓WordPressの記事作成に使える素材↓↓