对于类似发布各种活动通知或到期时间内容的wordpress站点,也许会需要这样一个功能:发布活动内容的时候设定活动的到期日期,当活动还没有过期,网页显示“进行中”;当活动已过了设定的日期,网页则显示“已到期”或者不再显示该文章。有了这个功能,wordpress站长就不需要每次在活动过期后再编辑文章,实现的方法可以通过wordpress内置的自定义字段。
首先:给 WordPress 添加自定义栏目 (Custom Fields)
这里用到的字段名称使用:expiration
设定日期的格式必须是:mm/dd/yyyy 00:00:00 如:01/01/2015 00:00:00
修改主题模板:
编辑当前使用的主题模板,修改文章主循环代码:
<?php
if (have_posts()) :
while (have_posts()) : the_post();
$expirationtime = get_post_custom_values('expiration');
if (is_array($expirationtime)) {
$expirestring = implode($expirationtime);
}
$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween > 0 ) {
?>
<div class="post" id="post-<?php the_ID();?>">
<h2><?php the_title();?></h2>
<div class="entry">
<?php the_excerpt();?>
</div>
</div>
<?php
}
endwhile;
endif;
?>
上面代码的作用是如果当前时间超过设定的时间,文章则不显示。
编辑当前使用的主题模板,修改文章主循环代码:
<?php
if (have_posts()) :
while (have_posts()) : the_post();
?>
<div class="post" id="post-<?php the_ID();?>">
<h2><?php the_title();?></h2>
<div class="entry">
<?php the_excerpt();?>
<?php
$expirationtime = get_post_custom_values('expiration');
if (is_array($expirationtime)) {
$expirestring = implode($expirationtime);
}
$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween > 0 ) {
echo '进行中';
}else {
echo '已过期';
}
?>
</div>
</div>
<?php
endwhile;
endif;
?>
上面代码的作用是如果当前时尚没有超过设定的时间内容中就显示“进行中”,否则就显示“已过期”。
看效果:「点这里」里面的文章
# 更多WordPress技巧,请关注「WordPress专题」