在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
相关产品推荐
相关产品推荐

