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

