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

如何修改Jet Engine脚本日期?WordPress中公元日期转太阳历方法

如何在原版Jet Engine中修改日期为太阳历(Solar Date)

不建议直接修改插件核心文件

首先明确:直接修改jet_engine.php或Jet Engine核心文件是不推荐的——插件更新时所有修改会被完全覆盖,且可能破坏插件稳定性。原版Jet Engine完全支持通过WordPress钩子实现需求,无需修改核心文件。

正确实现步骤:用钩子+日期转换逻辑

1. 编写太阳历转换函数

先写一个将公元日期(AD)转换为太阳历的函数,以下是示例(以波斯太阳历为例,你需要根据目标太阳历替换转换逻辑):

function convert_ad_to_solar($ad_date) {
    // 输入格式需匹配Jet Engine日期字段的存储格式(通常为Y-m-d或时间戳)
    $timestamp = strtotime($ad_date);
    
    // 替换为实际的太阳历转换逻辑,比如使用波斯历转换算法
    // 示例:假设使用jDateTime类(需确保该类已引入)
    // $jdate = new jDateTime(true, true, 'Asia/Tehran');
    // $solar_date = $jdate->date("Y/m/d", $timestamp);
    
    // 以下为占位示例,替换为真实转换代码
    $solar_date = date('Y-m-d', $timestamp);
    return $solar_date;
}

2. 用Jet Engine钩子修改日期输出

Jet Engine提供了专门的钩子来修改动态字段的输出值,针对日期字段可以使用jet_engine/dynamic_field/date_value钩子:

add_filter('jet_engine/dynamic_field/date_value', 'modify_jet_engine_date_to_solar', 10, 3);
function modify_jet_engine_date_to_solar($value, $field, $post_id) {
    // 指定需要修改的日期字段名,替换为你的实际字段名
    $target_field = 'your_date_field_name';
    
    if ($field['name'] === $target_field) {
        $value = convert_ad_to_solar($value);
    }
    return $value;
}

3. 代码添加位置

将上述代码添加到当前主题的functions.php文件,或使用自定义代码插件(如Code Snippets)——这两种方式都不会被插件更新影响。

若执意修改插件核心文件(强烈不推荐)

如果一定要修改插件文件,找到Jet Engine处理日期字段的核心文件:jet-engine/includes/dynamic-fields/classes/class-date.php
在该文件的render()方法中,找到日期格式化的代码段,插入你的太阳历转换逻辑。但再次提醒:插件更新后所有修改会丢失,且可能引发兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:15:03