WordPressのSimplicityテーマの投稿日と更新日の表示フォーマットをカスタマイズ。
Simplicityの投稿日と更新日(更新のある時のみ表示)は標準では「 2014/8/10 」(Y/n/j)です。
これを「2014/08/10 18:00」(Y/m/d H:i)の様にしたい。
まず、どのソースを弄ったらいいのか分からないので、
Simplicityテーマのファイル構造について説明
を読みました。
説明を読むと、各ファイルの役割が分かるので探してみると
datetime.php
「投稿/固定ページ」の公開日・更新日を表示するためのテンプレート。
とあるので、どうやらコレを弄ったら良さそうです。
と言う事で、ソースコードを開いて見ると(見やすいようにインデントを弄っています)、
<?php $options = get_seo_options(); if ($options['seo_date'] == 'update' && //検索エンジンに更新日を伝える場合 get_mtime('c')): //かつ更新日がある場合?> <span class="post-date"> <i class="fa fa-clock-o fa-fw"></i><?php the_time('Y/n/j') ;?> </span> <span class="post-update"> <i class="fa fa-history fa-fw"></i> <time class="entry-date date updated" datetime="<?php the_time('c') ;?>"> <?php if ($mtime = get_mtime('Y/n/j')) echo $mtime; ?> </time> </span> <?php else: ?> <span class="post-date"> <i class="fa fa-clock-o fa-fw"></i> <time class="entry-date date updated" datetime="<?php the_time('c') ;?>"> <?php the_time('Y/n/j') ;?> </time> </span> <?php if (get_mtime('c') != null) : //更新日ある時は更新日?> <span class="post-update"> <i class="fa fa-history fa-fw"></i> <?php if ($mtime = get_mtime('Y/n/j')) echo $mtime; ?> </span> <?php endif; ?> <?php endif; ?>
となっていて、テーマのカスタマイズで公開日か更新日どちらを検索エンジンに伝えるかによって条件が分岐しているので、数箇所か修正をします。
修正する箇所は、the_time(‘Y/n/j’)とget_mtime(‘Y/n/j’)の部分。Y/n/jを好きなフォーマットに修正すればOKです。
WordPressで別のテーマを使っていたことがある人は、あれ?そう言えば日付って設定にフォーマットの設定なかったっけ?って思う人もいると思います。
設定>一般設定の下の方
気が変わって違う表示にしたい時にソース弄るの面倒だし、ここで設定したように表示するように変更しました。
<?php $options = get_seo_options(); if ($options['seo_date'] == 'update' && //検索エンジンに更新日を伝える場合 get_mtime('c')): //かつ更新日がある場合?> <span class="post-date"> <i class="fa fa-clock-o fa-fw"></i> <?php the_time( get_option('date_format') ) ;?> <?php the_time( get_option('time_format') ) ?> </span> <span class="post-update"> <i class="fa fa-history fa-fw"></i> <time class="entry-date date updated" datetime="<?php the_time('c') ;?>"> <?php if ($mtime = get_mtime( get_option('date_format') )) echo $mtime ." ". get_mtime( get_option('time_format') ); ?> </time> </span> <?php else: ?> <span class="post-date"> <i class="fa fa-clock-o fa-fw"></i> <time class="entry-date date updated" datetime="<?php the_time('c') ;?>"> <?php the_time( get_option('date_format') ) ;?> <?php the_time( get_option('time_format') ) ?> </time> </span> <?php if (get_mtime('c') != null) : //更新日ある時は更新日?> <span class="post-update"> <i class="fa fa-history fa-fw"></i> <?php if ($mtime = get_mtime( get_option('date_format') ) ) echo $mtime ." ". get_mtime( get_option('time_format') ); ?> </span> <?php endif; ?> <?php endif; ?>
the_time()とget_mtime()に与える値を設定画面で設定したフォーマットになるように、get_option(‘date_format’)を指定しています。
しかしこれだと、時刻が付かないので、スペースを空けてthe_time( get_option(‘time_format’) )で時刻も表示するようにしました。
これで、このように表示されるようになります。
思い通りの表示になりました。
と、満足してトップページを開いてみたら、あれれ。トップページの一覧は表示が変わっていない...
もう一度説明を見直しました。
list.php
記事の一覧部分のテンプレート。
これですね。一覧の時は投稿日だけが表示されるようです。
下の行を探して修正しました。(simplicity20140810のバージョンなら48行目くらい)
<span class="post-date"><i class="fa fa-clock-o fa-fw"></i><?php the_time('Y/n/j') ;?></span>
修正方法はdatetime.phpを修正した時と同じです。
<span class="post-date"><i class="fa fa-clock-o fa-fw"></i><?php the_time( get_option('date_format') ) ;?> <?php the_time( get_option('time_format') ) ;?></span>
これで一覧も思い通りの日時表示になりました。
※ソースコード中に出てくるget_mtime()は更新日を取得する関数ですが、functions.phpに書かれた関数でした。予約投稿に対応した更新日取得関数のようです。
コメント