WordPressのテーマでcategory.php・date.php・search.php・tag.phpを作成する

 なぜこれらをひとまとまりと考えているのかというと、同じような作業工程で作ることができてしまうからです。WordPress のテーマの作成やカスタマイズの経験があれば、それほど難しくないわけです。ここまでテーマを作成してきて「これ以上はもうムリ」と思っているかもしれませんが、もうひとふんばりでユーザーがより使いやすいテーマを提供することができます。

実はなくても大丈夫

正直なところ、category.php・date.php・search.php・tag.php といった PHP ファイルがなくてもテーマは動作してしまいます。例えば、フォルダのなかに次のファイルしか存在しないテーマを思い浮かべてください。

  • comments.php
  • footer.php
  • header.php
  • index.php
  • page.php
  • sidebar.php
  • single.php

これはテーマが動作するために必要な最低限のファイルなのですが、このテーマでサイドバーにある「カテゴリー」のリンクをクリックしてみてください。すると表示できてしまうはずです。

ユーザーはこのページを表示する前に、自分でどのような操作をしたのかわかっているはずので、category.php・date.php・search.php・tag.php といった PHP ファイルがなくても大丈夫ではあります。ただ、ユーザービリティの向上のためにはあったほうがよいです。

テーマを作成し、余裕があったらぜひチャレンジしてみてください。

archive.phpでもいいのだけど

WordPress のサイドバーで日付ごとに記事を分類しているものを「アーカイブ」と呼んでいるので、アーカイブとは日付を意味するものと考えてしまうかもしれません。そう、私のように。

実は、WordPress における「アーカイブ」とは本来「ページの一覧」という意味があります。さらに、ページの一覧には目的別に次のような PHP ファイルを割り当てることもできます。

  • category.php:カテゴリー別のページ一覧
  • tag.php:タグ別のページ一覧
  • date.php:日付別のページ一覧
  • author.php:著者別のページ一覧
  • taxonomy.php:カスタム分類別のページ一覧

上記の5つのファイルは archive.php で置き換えることが可能です。ただし、その場合には分類ごとに表示を切り替えるなどの細かなカスタマイズはできなくなります。手を抜きたかったら archive.php だけ置いて、あとは使いまわせばいいわけですね。

なので、デフォルトではサイドバーにおける日付による分類は「アーカイブ」と呼んでいますが、「日付」とかになっていなければおかしいんです。最初に「アーカイブ」と名付けた WordPress さんサイドが悪い。

今回はカテゴリー、タグ、検索結果、アーカイブ(ここでは日付のこと)ごとに表示を切り替えたいので、archive.php を使いまわさずにそれぞれに対応する PHP ファイルを作成していきます。

くどいですが日付別で分類したページの一覧を表示したいので、archive.php ではなく date.php を作成する点に注意してください。

WordPress にはテンプレート階層と呼ばれる PHP ファイルを呼び出す優先順位があります。例えば、カテゴリーごとにページの一覧を表示する場合、category.php があればこれを使い、なければ archive.php、それもなければ index.php が使われることになります。最低限の PHP ファイルがテーマフォルダに存在すればテーマが動作してしまうのはこのためです。

category.php

ブログ記事の一覧が表示されるトップページとの違いは、ページ一覧の上に「カテゴリー:○○○」と表示されるようになるだけです。

なので、index.php さえ作ってあれば、ほとんど修正する必要もありません。6行目を追加しただけです。

記事数が多かった場合にはページネーションが表示されるようになっていますが、プラグインの「WP Page Numbers」を使って実現しています。25行目ですね。

1ページごとに何件の記事を表示するかを設定するには、管理画面で「設定」→「表示設定」と移動し、「1ページに表示する最大投稿数」に件数を入力すれば変更できます。最後に「変更を保存」ボタンを押して設定を完了してください。

tag.php

ページ一覧の上に「タグ:○○○」と表示されるようになります。

category.php さえ作っておけば tag.php は超カンタンなのです。category.php のソースコードをコピーして tag.php と名前を付けて保存、6行目を次の一行と入れ替えるだけです。

date.php

ページ一覧の上に「アーカイブ:○年○月」と表示されるようになります。

アーカイブ(日付ね)別の一覧表示も簡単です。tag.php と同様にソースコードをコピーして date.php で保存し、6行目を次の一行と入れ替えてください。

search.php

ページ一覧の上に「○○○」の検索結果:○件と表示されるようになります。

検索結果の一覧表示ですが、こちらは少し設定を加える必要があります。category.php の6行目を次の一行と入れ替えるまでは同じです。

ここで終わりにしてもいいのですが、検索結果に固定ページなどが引っ掛かるのが少しわずらわしいかもしれません。そこで、function.php に次のソースコードを追加します。

このように設定すれば、検索結果にはブログ記事だけが表示されるようになります。

index.phpを分岐させることもできる

今回は分類ごとに PHP ファイルを作成してきましたが、index.php ファイルに次のような修正を加えることで分類ごとのページ一覧の表示をカスタマイズすることも可能です。

例として当ブログの index.php を丸ごと掲示してしまいましたが、要は6~14行目をいつも使っているテーマの index.php にコピー&ペーストし、if 文で分類ごとに出力される HTML を分岐させればよいです。ブログのトップページであればなにも表示されません。

私は分類ごとにファイルを切り替える方式が好きなので複数の PHP ファイルを作成しましたが、冗長に感じるようであればこちらをお試しください。

「役に立った」と思ったら、記事のシェアをお願いします。

スポンサーリンク

Comment

コメント認証制です。反映されるまで時間が掛かる場合があります。
URLの記入はhttpのhを抜いて下さい(宣伝対策です)。
連続でコメントするとスパム扱いになる場合があります。
しばらく待ってからコメントしてください。

CAPTCHA


Si prega di attivare i Javascript! / Please turn on Javascript!

Javaskripta ko calu karem! / Bitte schalten Sie Javascript!

S'il vous plaît activer Javascript! / Por favor, active Javascript!

Qing dakai JavaScript! / Qing dakai JavaScript!

Пожалуйста включите JavaScript! / Silakan aktifkan Javascript!

TOP