我要创建一个“未来”-blogg(博客形式的科幻冒险),并希望显示所有日期+ 100年。例如,2012-05-17发表的帖子应该显示日期2112-05-17。
首先我认为我可以轻松地将日期设置为2112-05-17,但似乎wordpress无法处理高于2049的日期。
所以我的下一个想法是修改日期的显示方式。我想在general-template.php中修改get_the_date(),并让它返回更晚的日期。
但是我的技能还不够。我不知道如何在php中使用日期值。
get_the_date()看起来像这样:
function get_the_date( $d = '' ) {
global $post;
$the_date = '';
if ( '' == $d )
$the_date .= mysql2date(get_option('date_format'), $post->post_date);
else
$the_date .= mysql2date($d, $post->post_date);
return apply_filters('get_the_date', $the_date, $d);
}
有关如何修改它的任何想法?所以它在返回之前增加了100年?
任何输入都是适当的:)
答案 0 :(得分:2)
看起来您可能需要调查date_modify和strtotime
http://php.net/manual/en/datetime.modify.php
答案 1 :(得分:0)
假设您的mysql日期格式如下:YYYY-MM-DD
function add100yr( $date="2011-03-04" ) {
$timezone=date_timezone_get();
date_default_timezone_set($timezone);
list($year, $month, $day) = split(':', $date);
$timestamp=mktime(0,0,0, $month, $day, $year);
// 100 years, 365.25 days/yr, 24h/day, 60min/h, 60sec/min
$seconds = 100 * 365.25 * 24 * 60 * 60;
$newdate = date("Y-m-d", $timestamp+$seconds );
// $newdate is now formatted YYYY-mm-dd
}
现在你可以:
function get_the_date( $d = '' ) {
global $post;
$the_date = '';
if ( '' == $d )
$the_date .= mysql2date(get_option('date_format'), add100yr($post->post_date));
else
$the_date .= mysql2date($d, add100yr($post->post_date));
return apply_filters('get_the_date', $the_date, $d);
}
答案 2 :(得分:0)
尝试自定义字段:http://codex.wordpress.org/Custom_Fields
您必须为每个帖子输入+ 100年的日期,但是您不会依赖php或函数来更改当前日期。
答案 3 :(得分:0)
WordPress提供过滤器get_the_date
,允许在将值处理到主题或插件之前修改该值。
每次调用get_the_date()
时都会使用此过滤器。
add_filter( 'get_the_date', 'modify_get_the_date', 10, 3 );
function modify_get_the_date( $value, $format, $post ) {
$date = new DateTime( $post->post_date );
$date->modify( "+100 years" );
if ( $format == "" )
$format = get_option( "date_format" );
return( $date->format( $format ) );
}
此函数从帖子中获取post_date
,添加时间并根据给get_the_date()
的格式或使用WordPress选项中配置的默认格式返回。