WordPress:○分前や○日前のように記事投稿後の経過時間を表示する方法

WordPress:○分前や○日前のように記事投稿後の経過時間を表示する方法

WordPressで○分前や○日前といったように、記事が投稿されてからの経過時間を表示させる方法です。
よくある2017/01/01のような年月日の表記だけでなく、ちょっとした補足としてこういったものを出したいときに。

Codex(Function Reference/human time diff « WordPress Codex)に掲載されているサンプルコードそのままですが、human_time_diff()を使って表示させたい箇所へ下記のように記述することで、記事が投稿された時間を○分前や○日前といった経過時間で表示させることができます。

PHP

<?php echo human_time_diff( get_the_time('U'), current_time('timestamp') ) . '前に投稿されました。'; ?>

コード後半にある「前に投稿されました。」の部分は経過時間表示に続けて表示させたいテキストを指定しており、例えばこのコードをそのまま利用して3日前の記事を確認すると「3日前に投稿されました。」という形で表示されます。
また、使用時の「分」や「日」という表記はそれぞれ下記のような条件で表示されます。
(表記はWordPress Ver 4.8.3の「Twenty Seventeen」テーマ使用時に確認したものになります。)

  • 分 :1時間未満の場合
  • 時間:1時間以上24時間未満の場合
  • 日 :24時間以上7日未満の場合
  • 週間:7日以上30日未満の場合
  • か月:30日以上365日未満の場合
  • 年 :365日以上の場合

表記を任意のものに変更する

上で紹介したように経過した時間や日数によってそれぞれ異なる表記になりますが、これを任意のものに変更する方法です。
例えば上で紹介したhuman_time_diff()のコードを使用している状態で投稿されたのが3ヶ月前の記事の表示を確認した場合、30日以上365日未満に該当するので「3か月」という形で表示されますが、この「か月」の部分を何らかの理由で「ヶ月」にしたい場合は、下記のようにstr_replace()を使って該当の表記を置換することで任意のものに変更することができます。

PHP

<?php
  $human_time_diff = human_time_diff( get_the_time('U'), current_time('timestamp') ) . '前';
  $custom_human_time_diff = str_replace( 'か月', 'ヶ月', $human_time_diff );
  echo $custom_human_time_diff;
?>

もしくはhuman_time_diff()を複数の箇所で使用しており、それらすべてを変更するのが手間な場合は、表示したいテンプレートでは始めに紹介したものをそのまま使用し、表記変更についてはfunctions.phpを利用して変更するという方法もあります。

functions.php

add_filter( 'human_time_diff', 'custom_human_time_diff' );
function custom_human_time_diff( $since ) {
  return str_replace( 'か月', 'ヶ月', $since );
}

Close the search window,
please press close button or esc key.