【WordPress連載企画 第9回】アーカイブ、カテゴリー、タグページをカスタマイズしよう

【WordPress連載企画 第9回】アーカイブ、カテゴリー、タグページをカスタマイズしよう

前回では固定ページのカスタマイズを行いました。
WordPress連載企画 第9回では、アーカイブページのカスタマイズ方法を紹介していきます。

アーカイブとは、特定の項目で分類された記事の一覧です。
アーカイブにはいろいろなものがありますが、分類すると以下のようになります。

  • カテゴリーアーカイブ
  • 日付アーカイブ(年別、月別、日別)
  • タグアーカイブ
  • 作成者アーカイブ

これらアーカイブは、それぞれのアーカイブごとにテンプレートを分けることもできますし、1つのアーカイブテンプレートに条件分岐タグを使って処理を共通化することもできます。

1. アーカイブの条件分岐を理解しよう

それぞれのアーカイブ条件分岐の関数を見ていきましょう。

is_category()

カテゴリーアーカイブかどうか判定する関数です。

<?php if(is_category()): ?>
カテゴリーアーカイブです
<?php endif; ?>

is_tag()

タグアーカイブかどうか判定する関数です。

<?php if(is_tag()): ?>
タグアーカイブです
<?php endif; ?>

is_date()

日付アーカイブかどうか判定する関数です。

<?php if(is_date()): ?>
日付アーカイブです
<?php endif; ?>

カテゴリー、タグ、日付ともに関数の使い方は同じですね。

2. タイトルタグをカスタマイズしてみよう

では 3つの条件分岐をつかってタイトルタグをカスタマイズしていきます。
編集するファイルは、header.php ファイルです。

<?php if(is_category()): // カテゴリアーカイブの場合 ?>
<title>カテゴリアーカイブです</title>
<?php elseif(is_tag()): // タグアーカイブ場合 ?>
<title>タグアーカイブです</title>
<?php elseif(is_date()): // 日付アーカイブページの場合 ?>
<title>日付アーカイブです</title>
<?php else: ?>
<title>その他アーカイブです</title>
<?php endif; ?>

使用した条件分岐は3つですが、それ以外にもアーカイブ種別があるので else の処理も入れています。

3. 記事一覧を表示してみよう

loop.php ファイル内に条件分岐を追加して
アーカイブ用の一覧パーツを入れてみましょう。

カテゴリ、日別、タグ いずれかのアーカイブだった場合の条件分岐を追加します。

<?php if(is_category() || is_date() || is_tag() ) :?>
  <?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
      <section class="news-list">
      <p class="date"><?php the_time( get_option( 'date_format' ) ); ?></p>
      <h2 class="ttl-single"><?php the_title(); ?></h2>
      <p><?php the_excerpt(); ?></p>
      <p class="link-txt">><a href="<?php the_permalink(); ?>">続きを見る</a></p>
  <!-- /.news-list --></section>
    <?php endwhile; ?>
  <?php else : ?>
    <p>記事がありませんでした</p>
  <?php endif; ?>
<?php endif; ?>

is_category() と is_date() と is_tag() を使い、
カテゴリ、日別、タグ いずれかのアーカイブだった場合としたいので || (論理和演算子)を使います。

表示サンプル

4. サイドバーにアーカイブリンクを追加しよう

次にサイドバーのエリアに
カテゴリー一覧と月別一覧のリンクを追加してみましょう。

サイドバーの処理は sidebar.php にまとめられているので
sidebar.phpを編集します。

4-1. カテゴリ一覧を表示してみよう

wp_list_categories()

wp_list_categories() では、リンクつきの li を出力してくれます。

<ul>
<?php wp_list_categories('title_li='); ?>
</ul>

出力例は以下となります。

<ul>
<li><a href="http://wp-bashalog.localhost/?cat=2">お知らせ</a></li>
<li><a href="http://wp-bashalog.localhost/?cat=4">フットサル</a></li>
<li><a href="http://wp-bashalog.localhost/?cat=3">採用情報</a></li>
</ul>

表示サンプル

4-2. 月別一覧を表示してみよう

wp_get_archives()

wp_get_archives() では、日付アーカイブの一覧を表示します。
パラメータの指定がない場合には、月別アーカイブのリンクを生成します。

<ul>
<?php wp_get_archives(''); ?>
</ul>

出力されるコードは以下のようになります。

<ul>
<li><a href='http://wp-bashalog.localhost/?m=201405'>2014年5月</a></li>
<li><a href='http://wp-bashalog.localhost/?m=201404'>2014年4月</a></li>
</ul>

表示サンプル

まとめ

アーカイブ関連の条件分岐タグを使って、
アーカイブ、カテゴリー、タグページをカスタマイズしてみました。

ブログのようシンプルな構造のものは今回ご紹介したように、各パーツテンプレートに処理を追加する方法と「アーカイブ用テンプレート(archive.php)」を別途作成する方法がカスタマイズしやすいと思います。
より構造が複雑なWebサイトの場合には、アーカイブの種類ごとに個別テンプレートを作成してカスタマイズすると分かりやすいと思います。

次回は、「オリジナルのテンプレートファイルを追加してみよう」です。お楽しみに。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ