You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WordPress的get_comment_date()函数转换为返回波斯日期

在WordPress中将评论日期转换为波斯日期的解决方案

你可以通过获取评论的Unix时间戳来创建可靠的DateTime对象,再传入你已有的getDateIntl函数中,避免直接使用get_comment_date()返回的格式化字符串(该字符串格式依赖WordPress设置,易出错)。

方法一:直接在模板中处理

在单篇博文的评论模板(通常是comments.php)里,针对每个评论添加以下代码:

// 获取当前评论的Unix时间戳
$comment_timestamp = get_comment_time('U');
// 用时间戳创建DateTime对象并设置时区
$comment_date = new DateTime("@$comment_timestamp");
$comment_date->setTimezone(new DateTimeZone('Asia/Tehran'));
// 调用自定义函数输出波斯日期
echo getDateIntl($comment_date, "fa@calendar=persian", new DateTimeZone('Asia/Tehran'), 'eeee، dd MMMM');

方法二:封装成专用函数(更简洁)

在主题的functions.php中添加以下函数,之后可以在模板里直接调用:

function get_persian_comment_date($format = 'eeee، dd MMMM') {
    // 获取评论Unix时间戳
    $timestamp = get_comment_time('U');
    // 创建DateTime对象并设置时区
    $comment_date = new DateTime("@$timestamp");
    $comment_date->setTimezone(new DateTimeZone('Asia/Tehran'));
    // 调用已有的波斯日期转换函数
    return getDateIntl($comment_date, "fa@calendar=persian", new DateTimeZone('Asia/Tehran'), $format);
}

在评论模板中调用:

echo get_persian_comment_date();
// 如需自定义格式,传入参数即可
// echo get_persian_comment_date('yyyy/MM/dd');

为什么不用get_comment_date()的返回值?

get_comment_date()返回的是按照WordPress后台设置的日期格式生成的字符串(比如2024-05-20或May 20, 2024),如果要将其转为DateTime对象,需要严格匹配字符串格式,一旦用户修改了后台的日期设置,代码就会失效。而使用Unix时间戳则不受格式影响,兼容性更强。

内容的提问来源于stack exchange,提问作者Alipvd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:15:24