tag.phpが表示されない原因と解決策

tag.phpが表示されない原因と解決策

Wordprssは記事ごとにタグを設定し、同じタグのついている記事を一覧表示することができます。通常、タグの一覧を表示するために専用のテンプレート「tag.php」を使用します。しかし、tag.phpがあるにも関わらずindex.phpが優先的に読み込まれてしまい、記事の一覧が正常に表示されない問題が起きました。今回はその原因と解決策と、合わせて調べたタグについてメモしておきたいと思います。

WordPressのタグについて

WordPressでは、各記事(投稿ページ)に任意のタグをつけることができます。各記事につけられたタグはget_the_tag_listで表示することができます。

wp_tag_cloudを使用すれば、タグをまとめて「タグクラウド」で表示することもできます。

さらに、この表示したタグには自動的にリンクがつけられています。 リンク先のページでは、クリックしたタグと同じタグを含む記事が一覧表示されます。

この一覧表示させるページのテンプレートが「tag.php」になります。tag.phpの中に、選択されたタグを持つ記事を一覧表示するコードを書いておきます。 通常はtag.phpが使用されますが、tag-{slug}.php、tag-{id}.phpのいずれかで特定のタグ用のテンプレートを設定することもできます。 tag.phpがない場合は、archive.php、index.phpが代わりに読み込まれます。

タグのリンクから読み込まれるテンプレートの優先順位

  • tag-{slug}.php
  • tag-{id}.php
  • tag.php
  • archive.php
  • index.php

tag.phpが表示されない

タグの一覧を表示する際に、通常ならば優先的にtag.php、archive.phpが読み込まれるはずですが、tag.phpがあるにも関わらずindex.phpが読み込まれてしまう問題が起きました。 リンクはthe_tags( );で表示しているため、URLは正常のはずです。 タグを表示する部分やテンプレート、.htaccessを何度も確認しましたが原因は見つかりませんでした。

原因と解決策

テンプレートを読み込むリンクに関わる設定などを確認したところ、パーマリンク設定のページにある「タグベース」のところに、謎のピリオドが発見されました。そのピリオドを削除したら正常に表示されました。

つまるところ、原因はこの「タグベース」に値が入っていることでした。

タグベース

タグベースでは、タグアーカイブページのカスタムURLベースを設定できます。

管理画面/パーマリンク設定|WordPress Codex

タグベースに値があるためにタグを表示するためのURLが変わってしまい、tag.phpが正常に読み込まれなかったようです。
ピリオドひとつでページが正常に表示されず原因もなかなか分からなかったので、同じような問題が起きた時は、タグベースも忘れずに確認したいです。

参考

WordPressのテンプレートファイルの種類とテンプレート階層|Mignon Style