在Wordpress主题开发过程中,文章meta是必不可少的元素之一。不过一般都是2020/05/20等标准时间显示,但我们在使用国外主题时,我们经常看到文章meta显示发布文章时间是“x天、x小时之前”这种格式,那么这么格式是怎么做出来的呢。我们用下面的代码来看看。
2021年接到网友反馈。更新教程。原来的教程不建议使用,我们建议您使用下面的方法。
最新的方法就是Wordpress官方提供的human_time_diff,使用这个函数,就省去了原来教程的ietheme_time_to_human_time函数。在调用的同理使用2。这里再补充一个hook的方法,方便那些不会自己修改代码的朋友,有hook,就不用修改具体代码了。只需要将下面的代码放在function.php里面就行了。
add_filter( 'get_the_date', 'meks_convert_to_time_ago', 10, 1 ); //override date display
add_filter( 'the_date', 'meks_convert_to_time_ago', 10, 1 ); //override date display
add_filter( 'get_the_time', 'meks_convert_to_time_ago', 10, 1 ); //override time display
add_filter( 'the_time', 'meks_convert_to_time_ago', 10, 1 ); //override time display
/* Callback function for post time and date filter hooks */function meks_convert_to_time_ago( $orig_time ) {
global $post;
$orig_time = strtotime( $post->post_date );
return human_time_diff( $orig_time, current_time( 'timestamp' ) ).' '.__( 'ago' );
}
1、首先把下面的代码放在您主题的function.php里。这个代码是核心代码(已不推荐)
/**
* Convert the timestamp to human time (time ago)
*/function ietheme_time_to_human_time( $datetime, $full = false ) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => esc_html__('year', 'textdomain'),
'm' => esc_html__('month', 'textdomain'),
'w' => esc_html__('week', 'textdomain'),
'd' => esc_html__('day', 'textdomain'),
'h' => esc_html__('hour', 'textdomain'),
'i' => esc_html__('minute', 'textdomain'),
's' => esc_html__('second', 'textdomain'),
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ' . esc_html__('ago', 'textdomain') : esc_html__('just now', 'textdomain');
}
2、在您网站的合适位置,一般在template-tags.php或是其它显示文章meta值的地方,使用下面的代码调用即可。
$date = ietheme_time_to_human_time(get_the_date());
echo = '<li>
<i class="icon-calendar"></i>
<p>'. esc_html__( 'Date', 'textdomain' ) .'</p>
<span><time datetime="'. get_the_date('c') .'">' . $date . '</time></span>
</li>';
本文已在Ie主题由99839发布
文章来源:https://ietheme.com/convert-the-timestamp-to-human-time.html