WordPressを使用しているサイトで記事を公開した投稿の日付を公開日として表示したい場合には、WordPressの関数で簡単に公開日を表示することができます。
- the_date()
- the_time()
WordPressで公開日を表示するだけならthe_date()かthe_time()を使用します。
- get_the_date()
- get_the_time()
WordPressで公開日の日付を文字列で取得するならget_the_date()かget_the_time()を使用します。
WordPressに公開日を「表示」または「取得」する場合にWordPressの関数をどのように使えば良いのか読み進めることで参考になればと思います。
WordPressに公開日を表示する
WordPressに公開日を表示する場合に使用できるWordPress関数はいくつかありますが、はじめにthe_date()というWordPressの関数を使用して公開日を表示するやり方を説明します。
<?php the_date(); ?>
the_date()はループ内で使用することでWordPressに公開日を表示します。
たとえばWordPressの投稿ページに記述するループ内で投稿タイトルの下に公開日を表示する場合です。
<div class="single_content">
<?php if (have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<!--公開日の表示テスト-->
<ul class="date_list">
<li>公開日:<?php the_date(); ?></li>
</ul>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>
single.phpのループ内のthe_title()関数の下にでもthe_date()をPHPの開始タグと終了タグで囲んで記述します。
記事の公開日の表示形式については更新日も表示する予定があるのでHTMLのulとliでマークアップしたリスト要素にしています。
WordPressに更新日を表示するやり方は以下の記事を参考にしていただければと思います。
WordPressの投稿ループ内に記述したthe_date()で公開日を表示した結果は上の画像です。投稿の編集画面で記事を公開した日付が公開日として表示します。
<?php the_date(); ?>を記述してWordPressに公開日を表示しましたが、このとき表示される公開日の表示形式はWordPressの管理メニューの「設定」⇒「一般」にある日付形式で設定したフォーマット文字列がデフォルトの表示形式として表示します。
またWordPressの日付形式で設定する日付フォーマットの文字列はサイト全体で使用されるデフォルトの日付形式になるため、<?php the_date(); ?>で表示する公開日の日付もデフォルトのフォーマット文字列になるというわけですね。
しかし「記事一覧に公開日を表示する場合は公開日の日付フォーマットを違う文字列で表示したい」などのケースが必要になるかもしれません。
そんなときにはthe_date()の引数を使用してWordPressに公開日を表示します。
<ul class="date_list">
<li>公開日:<?php the_date('Y.m.d'); ?></li>
</ul>
先ほどのsingle.phpのループ内に記述したthe_date()の引数に、たとえばY.m.dの日付フォーマット文字列を記述します。
表示結果は上の画像のように「2021.04.11」という年月日ではない書式の日付で投稿の公開日が表示できます。
使用できるフォーマット文字列の種類は「wordpress.org 日本語サイト」の「日付と時刻の書式」のページで細かく紹介されています。時間があるときにでも読みながら色んな日付の書式で公開日をWordPressに表示してみてください。
公開日をthe_time()で表示する場合
投稿の公開日が表示できるWordPressの関数は前述したthe_date()の他にthe_time()という関数があります。
<ul>
<li>公開日:<?php the_time(); ?></li>
</ul>
the_time()はWordPressで投稿の公開時刻を表示する関数です。使い方としてはループ内で使用します。上記のリスト要素でマークアップしたthe_time()のコードをsingle.phpのメインループに追加記述してWordPressの投稿ページの表示結果を画像にしたものが以下です。
the_time()を記述しただけでは投稿の公開時刻を表示します。公開日と公開時刻をセットにしたりができるようになります。
このときthe_time()の引数に日付のフォーマットを記述してループの仲間に加えてあげることで、WordPressに公開日が表示できる関数として使用できるようになります。
<ul>
<li>公開日:<?php the_time('Y.m.d'); ?></li>
</ul>
the_date()で公開日が表示されないパターン
公開日を表示するWordPress関数をthe_date()だけではなくthe_time()についても説明した理由としては、the_date()で公開日が表示できないパターンがあるからです。
公開日が表示できないパターンとは「同じ日に複数の記事を投稿した場合」新しい記事のみにしか公開日が表示されないということです。
上の画像はthe_date()をWordPressのアーカイブのループに記述して投稿の公開日を表示させ、同じ日に投稿を公開してみた2つの記事です。
- 同じ日の記事①は公開日が表示されない。
- 同じ日の記事②は公開日が表示される。
最初に公開したのが「同じ日の記事①」で、次に「同じ日の記事②」を公開しましたが、公開日が表示できるのは、後に公開した「同じ日の記事②」でした。
このようにWordPressのthe_date()関数を使用した場合、公開日が表示されないパターンがあるため、同じ日の投稿すべてに公開日を表示したい場合はthe_time()でWordPressに公開日を表示するようにします。
WordPressに公開日を取得する
- get_the_time()
- get_the_date()
公開日を表示するWordPress関数「the_time()」「the_date()」の関数名の先頭にgetが付いただけですが、getがつくことにより投稿の公開日を取得することができます。表示することも可能で、その場合には取得した公開日をechoで出力します。
get_the_time関数は投稿の公開時刻を取得できます。公開日を取得する場合はget_the_time()の引数に日付のフォーマット文字列を記述します。
<?php get_the_time(); ?>
使用するときはget_the_time()関数をPHPの開始タグと閉じタグで囲んで記述、そしてループ内で使用することで、ループで表示された投稿の公開時刻を取得します。
<?php get_the_time('Y年m月d日'); ?>
get_the_time()の引数に日付のフォーマット文字列を記述してループ内で使用した場合は、ループで表示された投稿の公開日を取得できます。
投稿の公開日を取得しただけなので表示確認したい場合はvar_dumpで確認です。以下のコードのようにget_the_timeを代入した変数をvar_dumpしてみました。
<?php
$test = get_the_time('Y.m.d');
var_dump( $test );
?>
文字列(string)で公開日を取得できているのが確認できます。このとき取得した公開日の日付書式は、get_the_timeの引数に記述したフォーマット文字列で取得できます。
また上の画像では公開日を取得した結果の上に公開日の文字列から続く公開日の表示をしているのが分かるかと思います。
公開日:<?php echo get_the_time('Y年m月d日'); ?>
これはget_the_timeで公開日を取得するのではく、echoで公開日をWordPressに表示しています。
WordPressのget_the_time関数で公開日を表示するときにはechoを使用して表示させてください。
get_the_date()を使用することでもWordPressに公開日を取得することができます。
get_the_date()の使い方はget_the_timeのように引数に日付フォーマット文字列を記述しなくても投稿日付を取得できます。そして取得した公開日はechoで表示も可能です。
<!--公開日の表示と取得テスト-->
<ul>
<li>公開日:<?php echo get_the_date('Y年m月d'); ?></li>
<li>
<?php
$test = get_the_date();
var_dump( $test );
?>
</li>
</ul>
上の記述はWordPressのget_the_date関数で公開日の表示と取得をまとめて表示するコードです。
- echoを記述したget_the_date関数が公開日を表示
- 変数$testに代入したget_the_date関数が公開日を取得
公開日の取得はvar_dumpで取得確認のため表示させています。
結果は以下の画像のようになります。
WordPressのget_the_dateは投稿の日付を常に返してくれます。そのため引数に日付のフォーマット文字列を指定しなくてもループに記述することで投稿の公開日を取得できます。
画像では取得した公開日が「2021年4月11日(日)」の日付書式で取得できていますが、get_the_dateの引数に何も記述していないので、WordPressの管理メニューの「設定」⇒「一般」にある日付形式で設定したフォーマット文字列で取得できます。
フォーマット文字列を引数に記述した場合は、記述したフォーマットで公開日が取得です。
そしてget_the_dateで取得した公開日はechoを使用することでWordPressに公開日を表示するこが可能になります。
最後にget_the_dateの引数についてですが、第一引数に$formatを、第二引数に$post_idが使用できます。
<?php get_the_date( 'Y年m月d日', '18612' ); ?>
書き方は第一引数に取得したい公開日の日付フォーマットを記述、第二引数に取得したい公開日の投稿IDを記述すると、WordPressで取得したい投稿の公開日を取得することができます。
またechoで公開日の表示が可能なため、ループの外で特定の記事の公開日を表示したい場合などに使用できるかと思います。