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