Calendar2013.06.11
パーマリンクに %post_id% を使用しているとうまくいかないため、追記しました。

参考:WordPress category archives by date « Steve Taylor
参考:WordPressで指定したカテゴリーの年別アーカイブを作成する | webOpixel

実際にこのブログに適用してみました。

パーマリンクは下記を設定しています。(カスタム構造)

http://mekemoke.jp/%year%/%monthnum%/%post_id%.html

カテゴリアーカイブは下記のような URL になっています。(「ウェブ解析」カテゴリの場合)

http://mekemoke.jp/category/waca/

日付のアーカイブは下記のような URL になっています。(2012年)

http://mekemoke.jp/2012/

ですが、2012年のウェブ解析カテゴリの記事を表示しようとすると、404 not found になってしまいます。

http://mekemoke.jp/category/waca/2012/ ←動かない

ということで、下記を functions.php に追加してください。

これで、category-○○.php を用意しなくても下記のような URL で年別+カテゴリー別アーカイブにアクセスできます。

http://mekemoke.jp/category/waca/date/2012

うまくいかない場合

function.php に追加した後、一度パーマリンクの設定をデフォルトにしてから、もう一度同じカスタム構造を設定してみてください。上記のスクリプトは、応用すればタグ別の日付表示もできるみたいですね。

以下、過去の方法。

下記のページを参考にさせていただきました。

WordPress でカスタムフィールドの日付から年別アーカイブリストを作成する | wpxtreme

カスタムフィールドの場合はこちらがオススメ

WordPress > フォーラム ≫ 年度別アーカイブは可能でしょうか?

WordPress > フォーラム ≫ 特定カテゴリの「年度別」アーカイブ

あるカテゴリーの記事を対象に、年度ごとにまとめて、アーカイブとして表示させたい場合。例として、

  • 「セミナー情報」というカテゴリーの記事タイトル(+概要)を
  • 「平成23年度」分だけ一覧表示して
  • タイトルをクリックすると該当記事に飛ぶ

ということを実現したいと思います。ポイントは下記の3つです。

  1. アーカイブって言ってるけど使うのはカテゴリー用テンプレート
  2. クエリをカテゴリーで絞り込む
  3. 関数をかませて年別を年度別にする

色々調べてみましたが、専用のカテゴリーページでクエリを書いて抽出するのが一番手っとり早かったのでご紹介します。
URLもそこそこ気持ち良くなりました。

1. カテゴリー用テンプレートを作成

category-○○.php を作ります。とりあえずは公式テンプレート (Twenty ~) をコピーして名前だけ変えておけばOK。

2. カテゴリーを設定したクエリを設定

category-○○.php のコンテンツ表示部分を下記で入れ替えます。

3. 年別を年度別にする

参考:WordPress > フォーラム ≫ 年度別アーカイブは可能でしょうか?

絞り込む対象が年以外にも入ってくるので、上記を少し修正したものを function.php に仕込みました。
ちなみに特定のカテゴリーに関わらず、すべての年別表示を年度別に変換するのでご注意ください。

4. URLにアクセスする

パーマリンク設定をしてあれば、これで特定カテゴリーの年度別のアーカイブページは、

http://www.example.com/category/○○/2011/

というようなURLになります。

5. 立ちはだかる課題

1) ページ自体のタイトルが変!

「2011 | サイト名」のようになってます。SEOも関わってくるし、気になる方は header.php をゴニョってください。

2) どうやってリンクするの?

イレギュラーなURLかと思いますので、WPの関数使うより、PHPで入れ込んでしまうのが手っとり早いです。↓こんなかんじ。


7件のコメント

  1. 初めまして、ちょうどやりたかったことが記事になっており本当に感謝しております。

    早速実装をしたところ、カテゴリーページ(例:hogehoge.com/category/blog/)では2013年の記事がすべて表示され大満足ですが、特定カテゴリーの年別アーカイブ(例:hogehoge.com/category/blog/2012/)にアクセスをすると「Nothing found for Category blog 2012」というタイトルでトップページが開いてしまいます…

    あと一歩という事ですが半日試行錯誤をしても解決に至らず。
    よろしければお知恵を拝借させていただきたいと思いますのでよろしくお願いいたします。

    Reply

    • Hijili Kosugi

      うなぎさん、こんにちは。
      年別アーカイブ用のテーマファイルはありますか?(archive.php)
      not found なので、存在していないのではないでしょうか。
      上記の内容は、アーカイブと言っていますが、カテゴリーの表示をアーカイブっぽく見せているだけです。
      テーマファイルの構成を観直してみてくださいね〜

      Reply

  2. ご多用の中返信いただきありがとうございました。
    archive.phpは独自の物、デフォルトテーマの物両方を試してありますが、いずれにしても症状は変わりません…

    と思いきや、この返信を書きながら発見をしました!
    どうやらパーマリンクの中に「%postname%」が入っていれば動作するようです。(archive.phpは無い状態でも可)

    URLが長くなるので「/%post_id%」にしておりましたが、この状態で運用する方法はありませんでしょうか?

    Reply

    • Hijili Kosugi

      おはようございます。
      フォーラムに上がっていた方法で実現できましたので、内容を修正しました。
      全然違う方法ですが、これなら確実ですのでお試しください。

      Reply

  3. 再掲&追記:http://t.co/6r9XmGH0aJ [WP] 特定のカテゴリー+年度ごとに記事の一覧を表示する | @mekemoke

    Reply

  4. 早速試しましたが完璧です!!
    本当にありがとうございましたm(__)m

    ついでですが、恐らくコメントの返信を管理画面より行っていて気づいていないかもしれませんが
    IE、Firefox、Chromeのいずれでもコメント欄の表示が崩れております。

    Reply

  5. Hijili Kosugi

    「特定の」というところが抜けているのですが、リンクを制限すればひとまずは良いのではないかと…(^_^;)
    あと、コメントフォームが崩れてしまっている件については、把握はしているのですがイマイチ良い解決策が浮かばず放置プレイ中です。
    なんとかしないとな…とは、思っているのですがね……(テキストで書き込めるのでどうしても後回し)

    Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA