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

在WordPress中如何将文章日期转换为贾拉利历日期?

解决方案

要将WordPress文章日期转换为贾拉利历,无需依赖插件,直接修改代码即可实现。以下是具体步骤:

1. 添加贾拉利历转换函数

在主题的functions.php文件中添加公历转贾拉利历的工具函数:

function gregorian_to_jalali($gy, $gm, $gd) {
    $g_d_m = array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
    $jy = ($gy <= 1600) ? 0 : 979;
    $gy -= ($gy <= 1600) ? 621 : 1600;
    $gy2 = ($gm > 2) ? ($gy + 1) : $gy;
    $days = (365 * $gy) + ((int)(($gy2 + 3) / 4)) - ((int)(($gy2 + 99) / 100)) + ((int)(($gy2 + 399) / 400)) - 80 + $gd + $g_d_m[$gm - 1];
    $jy += 33 * ((int)($days / 12053));
    $days %= 12053;
    $jy += 4 * ((int)($days / 1461));
    $days %= 1461;
    $jy += (int)(($days - 1) / 365);
    if ($days > 365) $days = ($days - 1) % 365;
    $jm = ($days < 186) ? 1 + (int)($days / 31) : 7 + (int)(($days - 186) / 30);
    $jd = 1 + (($days < 186) ? ($days % 31) : (($days - 186) % 30));
    return array($jy, $jm, $jd);
}

2. 修改文章日期显示代码

替换你原有的日期输出代码,转为贾拉利历格式:

// 解析文章公历日期的年、月、日
$post_date = strtotime($post->post_date);
$gy = date('Y', $post_date);
$gm = date('n', $post_date);
$gd = date('j', $post_date);

// 转换为贾拉利历日期
list($jy, $jm, $jd) = gregorian_to_jalali($gy, $gm, $gd);

// 定义贾拉利历月份全称(波斯语),可按需替换为其他语言转写
$jalali_months = array(
    '', 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور',
    'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
);

// 拼接贾拉利历日期字符串
$jalali_date = '<span>' . $jd . '</span>' . '/' . $jalali_months[$jm] . ' , ' . $jy;

// 输出最终内容
echo get_the_title()
    ? $jalali_date
    : '<a href="' . get_the_permalink() . '">' . $jalali_date . '</a>';

说明

  • 转换函数gregorian_to_jalali实现了标准的公历转贾拉利历逻辑;
  • $jalali_months数组可根据需求替换为英语转写或其他语言的月份名称;
  • 提取日期为独立变量,避免重复代码,提升可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:12:53