公開期間プラグイン「post-expirator」を使わずに
公開終了日を実装する方法をご紹介します。
「カスタムフィールド」に「公開終了」項目を追加し、
その条件を満たしていれば表示させる仕組みです。
【手順】
1)カスタムフィールドテンプレート に「公開終了」項目を追加します。
日付のフォーマットは yyyy/mm/dd にする。
[pubend]
type = text
size = 35
date=true
dateFormat = yyyy/mm/dd
label = 公開終了日(year/month/day)
[pubend_hour]
type = select
value = 00:00:00 # 01:00:00 # 02:00:00 # 03:00:00 # 04:00:00 # 05:00:00 # 06:00:00 # 07:00:00 # 08:00:00 # 09:00:00 # 10:00:00 # 11:00:00 # 12:00:00 # 13:00:00 # 14:00:00 # 15:00:00 # 16:00:00 # 17:00:00 # 18:00:00 # 19:00:00 # 20:00:00 # 21:00:00 # 22:00:00 # 23:00:00
default = 00:00:00
label = 公開終了日(hour)
2)次にWordPressのテンプレートを調整します。
<?php
// 本日日付、時を取得
$currnet_date = date_i18n( ‘Y/m/d’ );
$currnet_hour = date_i18n( ‘H:i:s’ );
global $post;
$args = array(
‘post_status’ => ‘publish’,
‘post_type’ => ‘specialdia’,
‘posts_per_page’ => -1,
// カスタムフィールドテンプレート’pubend’の値が本日より後の投稿
‘meta_query’ => array(
‘relation’ => ‘AND’,
array( ‘key’=>’pubend’,
‘value’=>$currnet_date,
‘compare’ => ‘>=’,
‘type’ => ‘DATE’
)
),
);
if(have_posts()) : query_posts( $args );
while (have_posts()) : the_post();
if ( post_custom(‘pubend_hour’) ) :
$pubend_hour = post_custom(‘pubend_hour’) ;
else :
$pubend_hour = ’00:00:00′;
endif;
if ( strtotime(post_custom(‘pubend’).””.$pubend_hour) > strtotime($currnet_date.””.$currnet_hour) ) :
?>
<li><a href=”<?php echo “リンク先”?>” ><?php the_title(); ?></a></li>
<?php
endif;//
endwhile;
endif;
wp_reset_query();
?>
cronがつかえないサーバ環境などでお試しになってはいかがでしょうか。