通常のブログは年月日と曜日が表示
されると思いますが、Twitterのように
「~日前」という表示をさせたい、という
事があるのか疑問ではありますが、こ
の「お手軽WordPress Tips」コーナー
はそういったニーズを無視したコーナー
なので気にせず記事を書きます。
というわけで、相対日時を表示する実装法です。更新ペースが早いのであればその更新頻度をより印象付ける事が出来るかも知れません。
コード
コードです。functions.phpに以下を追加。
function time_ago( $type = 'post' ) { $d = 'comment' == $type ? 'get_comment_time' : 'get_post_time'; return human_time_diff($d('U'), current_time('timestamp')) . "" . __('前に投稿されました'); }
ループ内の好みの場所に以下を挿入。
<?php echo time_ago(); ?>
以下が実装した状態
「秒」は表示されません。あと「~週間」というのも物理的に複雑なので「120日前」という感じで表示されます。通常のタイムスタンプとは別に使ってあげるといいかも知れませんね。
2011 年 4 月 27 日 2:24 PM
はじめまして、ひろしと申します。
早速実装させて頂きました。
ありがとうございます。
そこで、1つ質問があります。
コメントに対する返信をしたときでも、返信した日時が、
コメントを投稿した日時になってしまいます。
何卒、ご教授をお願い致します。
2011 年 4 月 27 日 3:01 PM
はじめまして、こんにちは。
えっと、お使いのテーマのコメント部分がどういうコードで作られているか分かりませんが、コメント部分にもタイムスタンプ用のコードがあると思いますのでそのコードと入れ替えてあげれば実装出来るかなと思います(未検証)
2011 年 4 月 27 日 3:28 PM
早速のお返事ありがとうございます。
今、確認したところ、全てのコメントが、一番初めに投稿した
コメントの日時になっているようです。
返信は関係ありませんでした。
何か、わかることがございましたら
よろしくお願い致します。
2011 年 4 月 28 日 12:57 AM
頂いてる情報が少ないので正直ひろしさんの置かれている状況が何もわからないのです・・
えっと、まず目的は「コメントの日時も~分前に投稿されました」と実装されたいのですよね?で、
というのは、「~分前に投稿されました」は実装出来てるけど、全てのコメントの日時が同じになってしまう、という事ですか?
ご存知でしたら申し訳ありませんが、コメント部分のコードはテーマファイルによって様々ですので、出来ましたら的確な問題点を挙げて頂けると助かります。
2011 年 4 月 28 日 8:57 AM
シロさん
いろいろと説明不足で申し訳ありません。
>目的は「コメントの日時も~分前に投稿されました」と実装されたいのですよね?
はい。そうです。
>「~分前に投稿されました」は実装出来てるけど、全てのコメントの日時が同じになってしまう、という事ですか?
はい。そうなります。
>出来ましたら的確な問題点を挙げて頂けると助かります。
こちらがそのプログラムが入っている
サイトなのですが
http://m-vak.jp/hp/
全てのコメントが「6日前に投稿」となっています。
半分以上は、昨日追記したコメントになります。
また、実装ですが
function.phpに
function time_ago( $type = ‘post’ ) {
$d = ‘comment’ == $type ? ‘get_comment_time’ : ‘get_post_time’;
return human_time_diff($d(‘U’), current_time(‘timestamp’)) . “” . __(‘前に投稿’);
}
を追加しました。
そして、
wp-includes\comment-template.phpの中の
function start_elの中にtime_agoを追記しました。
こちらがそのプログラムです。
<?php printf(__('%s‘), get_comment_author_link()) ?>
実際に吐き出されたhtmlのソースは
sensitivity 6日前に投稿
です。
質問があいまいにも関わらず
寛大な対処を感謝いたします。
ありがとうございます。
2011 年 4 月 28 日 10:35 AM
あ、いえいえとんでもないです。情報いただけてよかったです。だいたい把握できました!
不具合の原因は
多分ここです。wp-includes/comment-template.phpはコアファイルなので基本的に触ってはいけない部分で、この記事内の
は、お使いのテーマ(ひろしさんのテーマは「wp」という名ですね)の中にあるファイルに変更を加える事を指します。
大抵はcomments.phpというファイル名だと思いますが、その中にcomment_date()があればそこを入れ替えるだけですが、なければコードを書き換える作業が必要になってきます。
コメント部分は結構難しめだと思うのでカスタマイズは慎重になさったほうがいいかもしれません。
2011 年 9 月 16 日 6:03 PM
私も ひろしさん と同じく、コメント直後なのに「1日前」と表示されました。
WordPress3.2.1
そこで、下記のように入れ替えると希望している動作になりました。
PHP等のプログラムは素人なので、もし間違っていればご指摘頂ければと思います。
$d = ‘comment’ == $type ? ‘get_comment_time’ : ‘get_post_time’;
↓
$d = ‘comment’ == $type ? ‘get_post_time’ : ‘get_comment_time’;
■参考
http://dreki26.digi2.jp/wp/wp_time_ago.gif