我在模板中使用以下代码。
<?php echo human_time_diff(get_the_time(\'U\'), current_time(\'timestamp\')) . \' ago\'; ?>
它显示的是2天前,20天前,90天前。有没有办法显示1周前而不是7天前,1个月前而不是30天前,1年前而不是365天前?
谢谢
我在模板中使用以下代码。
<?php echo human_time_diff(get_the_time(\'U\'), current_time(\'timestamp\')) . \' ago\'; ?>
它显示的是2天前,20天前,90天前。有没有办法显示1周前而不是7天前,1个月前而不是30天前,1年前而不是365天前?
谢谢
据我所知,这是wordpress所能做到的最深层次,您必须使用php将其转换为周/月/等。
你有两个选择:
使用human_time_diff
并创建一个只计算差异的函数(很容易计算出7天=1周,等等)。我真的不会用human_time_diff
尽管和使用strtotime()
而是使用此方法。
另一个选项是在php 5.3+中使用DateTime和DateInterval对象。你可以在这里看到一个例子(第二个答案),https://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php
您可以在中看到当前函数wp-includes/formatting.php
而且,正如你所提到的,只会分解为几分钟,然后是几小时,然后是几天。
一个建议是Core Trac 看看是否已经有计划改变这一点。快速搜索human_time_diff
出现了ticket #9272.
不幸的是,它似乎已经停止,您当然可以加入并重新启动对话,或者提供您自己的代码、用例、测试结果等。
或者,您可以简单地创建自己的函数(复制现有函数作为起点),并相应地包装时间戳。
因为我刚刚测试了这段代码,所以在我的博客上有很多文章摘录:
echo $daysago = human_time_diff( get_the_date( \'U\', $pid ), current_time(\'timestamp\'));
我得到了正确的结果:3 days
1 week
2 weeks
3 weeks
1 month
2 months
6 months
根据documentation:请检查我是否也使用$pid
表示post ID。看起来函数随着时间的推移有所改进。