日別アーカイブ: 2012/03/28 水曜日

最終更新日を表示させる方法

いま使っているテーマ Twentyeleven で最終更新日を表示させる方法について の覚え書きです。
テーマをバージョンアップすると上書きされて、カスタマイズした部分が消えちゃいますから、こうして覚書きを残しとかないといけない。

私の場合、投稿日の表示は

投稿日:2012/3/28 水曜日

のようにしてあります。

これは「設定」「一般設定」で、「日付のフォーマット」を「カスタム」で「Y/n/j l」としてるため、そのように表示されます。ちなみに「時刻フォーマット」はやはりカスタムで「G:i:s」としています。

さて、方法ですが、

 <?php
$u_time = get_the_time('U');
$u_modified_time = get_the_modified_time('U');
if ($u_modified_time != $u_time) {
  echo "最終更新日: ";
  the_modified_time('Y/n/j l');
}
?>

を、
content.php の30行目あたり
content-single.php の17行目あたり
にある

<?php twentyeleven_posted_on(); ?>
 

の後ろに貼り付けて、同じ文字コードで保存し、サーバのファイルに上書きするだけです。

ちなみにこの方法は

からの丸パクリです。

予約投稿すると 表示で、投稿日(予約した日付)よりも「最終更新日」(実際に予約投稿した日)のほうが古い なんていう逆転現象が起きますが、
気になるようでしたら 投稿日(予約した日時)を過ぎてから 内容(文章)をどこか変えて保存する、即ち更新作業をするとよいでしょう。

追加記事

「Twenty Eleven」の1.4でも同じです。
(2012年6月14日)

追加記事

上の記事の方法は
現在の
「Twenty Twelve」1.1
にそのまま適用できないようですね。

「Twenty Twelve」1.1では以下の方法で実現しました。
まず

にあります、

/*
  get_the_modified_time()の結果がget_the_time()より古い場合はget_the_time()を返す。
  同じ場合はnullをかえす。
  それ以外はget_the_modified_time()をかえす。
*/

function get_mtime($format) {
    $mtime = get_the_modified_time('Ymd');
    $ptime = get_the_time('Ymd');
    if ($ptime > $mtime) {
        return get_the_time($format);
    } elseif ($ptime === $mtime) {
        return null;
    } else {
        return get_the_modified_time($format);
    }
}
 

を、functions.php の最後に追記し、文字コードをUnicode(UTF-8)に指定し保存します。

次に content.php の53行目あたりにある

<?php twentytwelve_entry_meta(); ?>
 

に続けて同じ行で、

 | <?php if ($mtime = get_mtime('Y/n/j l')) echo '最終更新日:' , $mtime; ?> 
 

を追記し、文字コードをUnicode(UTF-8)に指定し保存します。

この2つのファイルをサーバの同ファイルへ上書きします。
結果はこの記事の最後に表示されているとおりです。
(2013年5月11日)

追加記事

プラグインで最終更新日を表示する方法

(1)プラグイン『WP Last Modified』をインストールし有効化します。
(2)『設定』『WP Last Modified』で設定し保存します。
これだけで記事の最初または最後に、最終更新日が表示されます。

私は記事の最後の部分に「最終更新日: 」の文字を添え、表示するようにしました。
ちなみに Twenty Twelve では記事の後ろに、 Twenty Thirteen は記事の冒頭に表示させると記事作成日の表示に近くていいみたいです。

日付のフォーマットを変えたいときは

(1)『インストール済プラグイン』のリストにある『WP Last Modified』の「編集」をクリックします。
(2)ソースを書き換えます。

私はドロップダウンリストの1項目目

	if($format == 1)
		$format = 'l, F j, Y';

の l, F j, Y を Y/n/j l, G:i:s に書き換え、

	if($format == 1)
		$format = 'Y/n/j l, G:i:s';

とし、設定で1項目目を指定しました。
結果はこの記事の最後に表示されているとおりです。

(2013年9月1日)