我想在显示的wordpress日期中添加100年

时间:2012-03-05 14:35:51

标签: php wordpress

我要创建一个“未来”-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年?

任何输入都是适当的:)

4 个答案:

答案 0 :(得分:2)

答案 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选项中配置的默认格式返回。