我正在使用WordPress主题报纸。现在,日期显示为" 2017年7月26日",但我希望它显示为" 4小时前",或者" 3天前"。环顾四周后,我发现有一个WordPress代码会执行此操作。但是,我无法弄清楚如何用人类时差来替换我网站的当前日期。有没有人有任何建议?
我的主题使用的获取日期函数:
function get_date($show_stars_on_review = true) {
$visibility_class = '';
if (td_util::get_option('tds_m_show_date') == 'hide') {
$visibility_class = ' td-visibility-hidden';
}
$buffy = '';
if ($this->is_review and $show_stars_on_review === true) {
//if review show stars
$buffy .= '<div class="entry-review-stars">';
$buffy .= td_review::render_stars($this->td_review);
$buffy .= '</div>';
} else {
if (td_util::get_option('tds_m_show_date') != 'hide') {
$td_article_date_unix = get_the_time('U', $this->post->ID);
$buffy .= '<span class="td-post-date">';
$buffy .= '<time class="entry-date updated td-module-date' . $visibility_class . '" datetime="' . date(DATE_W3C, $td_article_date_unix) . '" >' . get_the_time(get_option('date_format'), $this->post->ID) . '</time>';
$buffy .= '</span>';
}
}
return $buffy;
}
调用函数的地方:
<div class="item-details">
<?php echo $this->get_title();?>
<div class="td-module-meta-info">
<?php if (td_util::get_option('tds_category_module_mx1') == 'yes') { echo $this->get_category(); }?>
<span class="td-author-date">
<?php echo $this->get_author();?>
<?php echo $this->get_date();?>
</span>
</div>
<div class="td-excerpt">
<?php echo $this->get_excerpt();?>
</div>
</div>
人类时间差异代码:
<?php echo str_replace('mins', 'minutes', human_time_diff( get_the_time('U'), current_time('timestamp') ) . ' ago'); ?>
我想要更改日期的元素
<?php
class td_module_2 extends td_module {
function __construct($post) {
//run the parrent constructor
parent::__construct($post);
}
function render() {
ob_start();
?>
<div class="<?php echo $this->get_module_classes();?>">
<div class="td-module-image">
<?php echo $this->get_image('td_324x160');?>
<?php if (td_util::get_option('tds_category_module_2') == 'yes') { echo $this->get_category(); }?>
</div>
<?php echo $this->get_title();?>
<div class="td-module-meta-info">
<?php echo $this->get_author();?>
<?php echo wp_relative_date(get_the_time('U'));?>
</div>
<div class="td-excerpt">
<?php echo $this->get_excerpt();?>
</div>
<?php echo $this->get_quotes_on_blocks();?>
</div>
<?php return ob_get_clean();
}
}
&#13;
答案 0 :(得分:0)
以下是根据设置的当前日期和时间转换为分钟,小时或天的一些代码,其中发布日期是您创建元素时的日期时间戳。
尝试看看这是否符合您的要求。
将 $ post_date 更改为创建帖子的时间戳。 (E.G在下面这个例子中根据我发布这个答案的时间显示1天......)
在函数中包含下面的代码,并使用带有时间戳('7/25/2017 00:00:00')的wordpress getDate功能传入$ post_date,该函数将返回小时,分钟,天。
$seconds_hours = 60*60;
$hours_days = $seconds_hours*24;
$today = date("Y-m-d");
$timestamp = $today.' '.date("H:i:s");
$post_date = '7/25/2017 00:00:00';
$difference = strtotime($timestamp)-strtotime($post_date);
if ($difference>$hours_days) {
$date1 = new DateTime(substr($post_date,0,10));
$date2 = new DateTime($today);
$since = $date2->diff($date1)->format("%d");
if ($since==1) { $since .= ' day'; }
else { $since .= ' days'; }
} else if ($difference>$seconds_hours) {
$since = floor($difference/$seconds_hours).' hours';
} else {
$since = floor($difference/60).' mins';//mins
}
echo $since;
Wordpress解决方案(未经测试)
function human_difference($post_date) {
$seconds_hours = 60*60;
$hours_days = $seconds_hours*24;
$today = date("Y-m-d");
$timestamp = $today.' '.date("H:i:s");
$difference = strtotime($timestamp)-strtotime($post_date);
if ($difference>$hours_days) {
$date1 = new DateTime(substr($post_date,0,10));
$date2 = new DateTime($today);
$since = $date2->diff($date1)->format("%d");
if ($since==1) { $since .= ' day'; }
else { $since .= ' days'; }
} else if ($difference>$seconds_hours) {
$since = floor($difference/$seconds_hours).' hours';
} else {
$since = floor($difference/60).' mins';//mins
}
return $since;
}
$post_date_time = get_the_date() . ' ' . get_the_time(); //Format this to m/d/Y H:i:s
echo human_difference($post_date_time); // x days or x hours or x minutes
答案 1 :(得分:0)
在functions.php文件中添加
function wp_relative_date($post_date)
{
return human_time_diff( $post_date , current_time( 'timestamp' ) ) . ' ago';
}
显示时间在循环中添加
echo wp_relative_date(get_the_time('U'));