Я хочу добавить 100 лет к отображаемым датам wordpress

Я собираюсь создать «будущее» -blogg (вроде научно-фантастического приключения в форме блога) и хочу показать все даты +100 лет. Например, опубликованная публикация 2012-05-17 должна отображать дату 2112-05-17.

Сначала я подумал, что могу просто установить дату на 2112-05-17, но кажется, что WordPress не может обрабатывать даты выше 2049.

Поэтому моя следующая идея – изменить способ отображения дат. Я думал о том, чтобы изменить get_the_date () в целом-template.php и заставить его вернуться к более поздней дате.

Но здесь моих навыков недостаточно. Я ничего не знаю о том, как работать с значениями даты в 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 лет до даты, прежде чем возвращать его?

Любой вход был бы appriciated 🙂

Solutions Collecting From Web of "Я хочу добавить 100 лет к отображаемым датам wordpress"

Похоже, вам, возможно, придется исследовать date_modify, а также strtotime

http://php.net/manual/en/datetime.modify.php

http://www.php.net/manual/en/function.strtotime.php

http://www.php.net/manual/en/datetime.add.php

Предполагая, что ваши даты mysql имеют следующий формат: ГГГГ-ММ-ДД

 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("Ymd", $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); } 

Попробуйте настраиваемое поле: http://codex.wordpress.org/Custom_Fields

Вам нужно будет ввести дату +100 год для каждого сообщения, но тогда вы не будете полагаться на php или функции, чтобы изменить текущую дату.

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.