如何将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
相关产品推荐
相关产品推荐

