人間感覚で〇年前、〇ヶ月前といった相対的な経過時間を表現するWordPressショートコードの実装方法

〇年前、〇ヶ月前を計算して表記

僕は、当ブログの記事等で、以下のような表現を使うことがあります。

エックスサーバーは、9年前にサービス提供が開始されました。

MixHostは、2年2ヶ月前にサービス提供が開始されました。

カラフルボックスは、1ヶ月前にサービス提供が開始されました。

上記のように、〇年前、〇ヶ月前、○週間前、○日前と記事に書いてしまうと、ブログ運営上で面倒な部分が出てきます。

それは月日が経つにつれ、表記の差が出てきて1年前、2年前、3年前と記事を修正する必要が出てくるからです。

「時間が経過するごとに記事を修正する」という作業は実際かなり面倒くさいです。

ならば、こう書けばいいじゃないかと思われるかもしれません。

エックスサーバーは、2009年1月7日にサービス提供が開始されました。

MixHostは、2016年6月22日にサービス提供が開始されました。

カラフルボックスは、2018年7月26日にサービス提供が開始されました。

もちろんこれでもいいんです。

けれどこれだと、人間感覚的に一拍考えてしまうというか「いまいち、いつ頃だったか分かりづらい」という難点があります。

人間の会話でも、

あれは10年前だったかなぁ…、あの時…

というのはよくあっても、

あれは2008年のことだった。あの時…

と言いづらいのと似た感覚というか。

なので記事で相対時間を書くとき、僕の中では「〇年前という表記が分かりやすくて使いたいんだけど、後の記事修正が面倒なんだよなぁ…」という葛藤がありました。

それを解消する手段として、「WordPressのショートコードを利用してサーバー側で計算させればいいじゃん!」と思いついたので実装してみました。

ちなみに、冒頭の例文は以下のように表記しており、年月が経っても記事は自動的に修正されるようになっています。

スポンサーリンク
レクタングル(大)広告

カスタマイズ方法

カスタマイズ方法は、かなり簡単です。

以下のコードをテーマ(子テーマ)のfunctions.phpに貼り付けるだけです。

上記のget_human_time_diff_advance関数は、以下のページを参考に改良させていただきました。

参考 相対的な経過時間を表示する WordPress 関数 human_time_diff() // understandard

あくまで人間感覚的な数字なので、正確な相対日時を表示するのには向きません。
年数に関しては、3年までは○ヶ月付きで出力するようにしました。3年より後は「何ヶ月とかはあまり気にしないかな」と思い、年数のみとしました。ここらへんは、個人の好みで変更してください。僕は3年にするか5年にするか迷いましたが、とりあえず3年にしました。

動作確認

以下では実際に動作させるための例文と動作状態です。

例文

以下の例文から、ある程度使い方は推測できるかと思います。

よく利用される日付のフォーマットとしては、こんな感じでしょうか。

個人的には「20180914」形式が入力しやすいです。分かりやすさで言えば、「2018/09/14」とかになるかも。

表示例

実際の表示例がこちらになります。

  • あなたは6年間、毎日ブログを書き続けた。
  • ちょうど25年前、この道を通った夜。昨日の事のように今はっきりと思い出す。
  • 日本で気象観測が始まってから、135年が経つ。
  • 息子がアメリカに移住してから、もう18年にもなる。
  • 23年前のあの日に事件の真相がある。
  • 岐阜県不破郡関ケ原町で、418年前に天下分け目の決戦が開かれた。
  • 今年は、西郷隆盛生誕190年、没後141年になる。
  • 寝ログを運営しだしてから、もう4年になる。
  • この記事は、4日前に書かれました。

こんな感じで、計算後の相対時間が表示されます。

まとめ

こんな感じで、実際の日付を書くよりも、多少なりとも読み手に分かりやすい文章を作るために利用できるかと思います。

やっぱり、「2007年」と書くのと、「11年前」と書くのでは、読み手の受け取り方も全然違ってきます。

どちらの表記方法が優れているとかではなくて、「文章の内容に沿って効果的に双方使えれば」ということで機能を作成してみました。

記事を書いていて、

時間経過の相対表記は記事修正が面倒なんだよね…

西暦日付表示は分かりづらいんだよなぁ…

と思ったことがある人は、使うと多少は便利になるかもしれません。