WordPressで投稿から一定の期間が経った記事にメッセージを表示する

WordPressで投稿から一定の期間が経った記事に対して「○○以上前に書かれた記事です。」とメッセージを表示するサンプルです。

このブログでは一年以上前の記事に対してメッセージを表示しています。

  
この記事は2年以上前に書かれたものです。
情報が古い可能性があります。

検証バージョン

  • WordPress3.5.2
  • WordPress 3.6
  • WordPress 3.7

human_time_diffを使わないコード

human_time_diffの動作がバージョンによって異なるようなので、human_time_diffを使わないパターンを追記しました。

single.php

<?php if ( have_posts() ) : ?>
	<?php while ( have_posts() ) : the_post(); ?>
		<!-- .post -->
		<article class="post">
			 
			<!-- .post-content -->
			<div class="post-content">
				<?php
				// 差を求める
				// MINUTE_IN_SECONDS  = 60 (seconds)
				// HOUR_IN_SECONDS	= 60 * MINUTE_IN_SECONDS
				// DAY_IN_SECONDS	 = 24 * HOUR_IN_SECONDS
				// WEEK_IN_SECONDS	= 7 * DAY_IN_SECONDS
				// YEAR_IN_SECONDS	= 365 * DAY_IN_SECONDS		
				$day = round( (int) abs( get_the_time( 'U' ) - current_time( 'timestamp' ) ) / DAY_IN_SECONDS );
				 
				// 投稿から365日以上経過している場合
				if( $day >= 365 ) :
				?>
					<p class="attention">
						この記事は1年以上前に書かれたものです。<br />
						情報が古い可能性があります。
					</p>
				<?php endif; ?>
			 
				<?php the_content(); ?>
			</div>
			<!-- /.post-content -->
			 
		</article>
		<!-- /.post -->
		 
	<?php endwhile; ?>
<?php endif; ?>

human_time_diffを使ったWordPress 3.5で動作するコード

single.php

<?php if ( have_posts() ) : ?>
	<?php while ( have_posts() ) : the_post(); ?>
		<!-- .post -->
		<article class="post">
			
			<!-- .post-content -->
			<div class="post-content">
				<?php
				$day = str_replace( '日', '', human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) ) );
				
				// 投稿から365日以上経過している場合
				if( $day >= 365 ) :
				?> 
					<p class="attention">
						この記事は1年以上前に書かれたものです。<br />
						情報が古い可能性があります。
					</p>
				<?php endif; ?>
			
				<?php the_content(); ?>
			</div>
			<!-- /.post-content -->
			
		</article>
		<!-- /.post -->
		
	<?php endwhile; ?>
<?php endif; ?>

human_time_diffを使ったWordPress 3.6及び3.7で動作するコード

single.php

<?php if ( have_posts() ) : ?>
	<?php while ( have_posts() ) : the_post(); ?>
		<!-- .post -->
		<article class="post">
			 
			<!-- .post-content -->
			<div class="post-content">
				<?php
				$diff =  human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) ) ;
				 
				// 投稿から1年以上経過している場合
				if( strpos( $diff, '年' ) != 0 && str_replace( '年', '', $diff ) >= 1 ) :
				?>
					<p class="attention">
						この記事は1年以上前に書かれたものです。<br />
						情報が古い可能性があります。
					</p>
				<?php endif; ?>
			 
				<?php the_content(); ?>
			</div>
			<!-- /.post-content -->
			 
		</article>
		<!-- /.post -->
		 
	<?php endwhile; ?>
<?php endif; ?>

CSSを適用した実行結果例

  

共有やブックマークなど

コメントは受け付けていません。