wp-includes/formatting.php にある human_time_diff() が利用できると思います。
対象となる Unix タイムスタンプと、比較対象となる Unix タイムスタンプ (こちらは省略可能で、初期値が現在時刻) を渡すと、2 つの時刻の差分の絶対値を評価し、利用中の WordPress のロケールに基づいてフォーマットされた文字列を返します (5 days または 5 日 など)。
投稿時刻のタイムスタンプは get_the_time( ‘U’ ) で取得できますので、
echo 'この記事は投稿から ' . human_time_diff( get_the_time( 'U' ) ) . 'が経過しています。';
という感じです。
ただこの関数を使うと、 60 分以内の場合は分 (15 minitues または 15 分など)、24 時間以内は時間 (5 hours または 5 時間など) を返すこと、差分を絶対値で評価するために過去の投稿と予約投稿 (未来の投稿) が見かけ上同じ値 (現在から遡って +5 日でも -5 日でも返り値は共に 5 日) であることから、あくまで日数での表示にこだわる場合や、予約投稿の存在も想定している場合には、それぞれについて適宜分岐を考える必要があります。
$from = get_the_time( 'U' ); // 投稿時刻のタイムスタンプ
$to = time(); // 現在時刻のタイムスタンプ
$diff = $to - $from; // 遡っての差分
if ( $diff < 0 ) {
// 予約投稿
echo 'この記事は' . human_time_diff( $from, $to ) . '後に投稿される予定です。';
} elseif ( abs( $diff ) <= 86400 ) {
// 24時間以内
echo 'この記事は 24 時間以内に投稿されました。'
} else {
echo 'この記事は投稿から ' . human_time_diff( $from, $to ) . 'が経過しています。';
}
ありがとうございます。明日試してみたいと思います。