読者です 読者をやめる 読者になる 読者になる

WordPressで超強引に年度別リストと記事一覧を表示する

WordPress Webメモ

PHPスキルが無いため、かなり強引にやりきった時のメモです。

やりたかったこと

f:id:daftomiken:20160730094108p:plain

条件

  1. 固定ページ(page.php)を使用
  2. 年度別アーカイブリスト
    2016年3月の場合は2015年度として表示する
  3. 一覧ページでは4月1日〜翌年3月31日までの記事を表示
  4. 見出しに年度を表示
  5. 10件ごとにページ分割

 

参考サイト

www.webopixel.net

d.hatena.ne.jp

 

参考サイトで引っかかった点

「wp_get_archives()」を年度別にする方法と、記事一覧を年度別にする方法がネット上に掲載されていたものの、次の点がわからず断念しました。

  • 2016年3月の投稿があるのに2015年のリストが表示されない
  • 年度別アーカイブにしたいページと、通常の年別アーカイブ表示にしたいページがあるので「wp_get_archives()」で取得する内容を全部年度別に変更してしまいたくない。

 

今回強引にやりきった方法

★page.php

 

★年度別アーカイブリスト
  1. 「wp_get_archives()」で月別アーカイブを取得(format=custom、echo=0でカスタムできる状態にする)
  2. 取得した値を配列に変更
  3. 1月〜3月は-1して前年の扱いにする
  4. 「年●月」をpreg_replace()で削除
  5. array_filster()で空の配列を削除
  6. array_unique()で重複項目を削除
  7. array_values()で歯抜けの配列を整頓
  8. 配列をforeachで回す
  9. URLに「?y=年」のパラメータを追加
★記事一覧
  1. 取得たパラメータが空の場合は記事を非表示
  2. URLの「?y=年」が有効になった時にリストを非表示、記事を表示するよう切り替える
  3. WP_Queryの条件にdate_query(after、before)を追加し、URLのパラメータを反映
    'after' => '2016/4/1',
    'before' => '2017/3/31 23:59:59'
    ↑こうなるようにする
  4. ページ分割は「WP-PageNaviプラグインを使用