(記事内リンクにPR含む場合があります)

【WordPress】投稿日時をツイッター風の相対表記にするプログラムを共有

WordPressテーマ作成

WordPressのブログ記事の作成や更新日時を相対表記する方法については4日前に書きました。そして今後の課題としてより人間的な表現に近づけたいと具体例も述べました。するとすぐプログラムを作成してくれた人がいます。

ゆめぴょんです。こんちはっ(^^)/

ちなみに前回の記事は次のとおり。今後の課題は記事の一番最後に書いてます。

このブログではじめてのコラボ企画かも

コラボというには大げさですが、ブログに書いた内容にすぐ反応を頂けるのは本当にうれしいですね。今までは自分がインプット側の人間だったのに、はじめてアウトプット側にまわれたと実感できました。

そのWordPress用の相対日時表記のプログラムを作成してくれたのは、あらゆ(@arayutw)さんです。ありがとうございます。

人間味ある相対日時表記プログラムの修正点

まずあらゆさんの作成した、相対日時表記プログラムのオリジナル版を設置しましたが、全く問題なく動きました。私の書いた課題が全て解決されていました。本当に仕事が早くてびっくりです!

そして実際にブログに設置してみて、次の4点を修正&カスタマイズしました。あくまでも私の好みですので、マネしなくて良いとは思います。

  • 「先週○曜に作成」を「●日前」に戻した
  • 「先月□日に作成」を「●日前」に戻した
  • ホーム(トップページ)の表記は元に戻した
  • 「きのうに作成」「おとといに作成」を「きのう作成」「おととい作成」に修正
  • 「きのう作成」にするまでの時間を8時間から12時間に変更

プログラム修正の理由

私自身が前回の記事で課題として出しておきながら、なぜ上のように戻す設定にしたのか。それはずばり「まだ1ヶ月以上前の記事が存在しない」からです。

記事作成から1ヶ月間は全て「●日前」で統一した方が見やすいと感じました。これはこのブログ特有の問題です。今後もいろいろ好みで修正していくつもりです。

ホームの表記を元に戻したのは、作成日時の照会が記事ごとに繰り返されプログラム実行回数が多いためです。ページの表示スピードを向上させるためにやむなくです。個別記事ページの場合はプログラムを1回しか実行しないため問題ありません。

私がアレンジした相対日時表記プログラム

上の修正を加えたプログラムは次のとおり。

[php]
function yumepyon_diff(){
// 作成 あらゆさん http://arayu.jp/wordpress-yumepyon-diff.html
// アイデア ゆめぴょん http://wispyon.com/47/

//現在時の取得
$now_yumepyon_time = current_time(‘timestamp’);

//投稿時の取得
//海外サーバー仕様。日本サーバーは2行目で正常動作。
$post_yumepyon_time = get_post_time(‘U’,true);
//$post_yumepyon_time = get_post_time();

//human_time_diffの取得
//海外サーバー仕様。日本サーバーは2行目で正常動作。
$human_yumepyon_diff = human_time_diff($post_yumepyon_time);
//$human_yumepyon_diff = human_time_diff($post_yumepyon_time,$now_yumepyon_time);

//何時間後から「昨日表示」にするか(ここで設定した時間を過ぎるまでは日付が変わっても「〜時間前表示」です!)
$yesterday_flag = 12;

//何日以上前からを「〜ヶ月前表示」にするか(100日くらいを推奨)
$month_flag = 100;

////// 設定ここまで //////

$difference_sec = $now_yumepyon_time – $post_yumepyon_time;
$difference_day = floor($difference_sec / 86400);
$difference_month = date(‘n’,$now_yumepyon_time) – date(‘n’,$post_yumepyon_time);
$difference_year = date(‘Y’,$now_yumepyon_time) – date(‘Y’,$post_yumepyon_time);
$day_to_year = ceil($difference_day/30.4);
$post_weekly = date(‘w’,$post_yumepyon_time);
$today_weekly = date(‘w’,$now_yumepyon_time);
$difference_week = $today_weekly – $post_weekly;
$difference_weekly = array(‘7′,’8′,’9′,’10’,’11’,’12’,’13’);
$weekly_label = array(‘日’,’月’,’火’,’水’,’木’,’金’,’土’);

if( date(‘n’,$now_yumepyon_time) >= 7 && $difference_year > 0 ){
echo "昨年".date(‘n’,$post_yumepyon_time)."月に作成";
}elseif( $difference_day >= $month_flag && abs($difference_month) != 6 && 12 > $day_to_year ){
echo $day_to_year."ヶ月前に作成";
}elseif( ( $difference_month == 6 && $difference_year == 0 ) || ( $difference_month == -6 && $difference_year == 1 ) ){
echo "半年前に作成";
}elseif( $difference_year > 0 ){
echo get_the_date();
/* } elseif( $difference_day >= $difference_weekly["$today_weekly"] && ( abs($difference_month) == 1 || ( date(‘n’,$now_yumepyon_time) == 1 && date(‘n’,$post_yumepyon_time) == 12 ) ) ){
echo "先月".date(‘j’,$post_yumepyon_time)."日に作成";
}elseif( $difference_day > 2 && $difference_day > $today_weekly && $difference_weekly["$today_weekly"] >= $difference_day){
if( $post_weekly == $today_weekly ){
echo "1週間前に作成";
}else{
echo "先週".$weekly_label["$post_weekly"]."曜に作成";
} */
}elseif( 3 > $difference_day && ( $difference_week == 2 || $difference_week == -5 ) ){
echo "おととい作成";
}elseif( 2 > $difference_day && ( $difference_week == 1 || $difference_week == -6 ) && $difference_sec > 3600 * $yesterday_flag ){
echo "きのう作成";
}else{
echo $human_yumepyon_diff."前に作成";
}
}
[/php]

プログラムの設置方法

WordPress管理画面の左メニュー「外観」→「テーマの編集」から「functions.php」を選んで、適当な位置(一番下でいいかも)に貼り付けて保存してください。

そして相対日時表記を表示したい箇所(テーマ編集)に次のように書いてください。

[php]
<?php echo yumepyon_diff(); ?>
[/php]

「先週○曜に作成」「先月□日に作成」を復活させたい場合は、45,52行目の「/*」「*/」を同時に外してから保存してください。19,22行目の数値は好みで変えてください。

「functions.php」ファイルはWordPressで最も重要なファイルの1つなので、修正を加える前には必ずバックアップをとってくださいね。そして問題が起こったらすぐに元に戻してください。修正は自己責任でお願いします。

あらゆさん、便利なプログラムを本当にありがとうございました。今後も何かからんでいければ良いなと思います。他のブロガーともこんな感じでつながっていければうれしいです。


ゆめぴょんでした。ちゃおっ!

タイトルとURLをコピーしました