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

WP Parsi Date插件日期字段为空时存入异常值问题求助

解决Parsi Date插件空日期字段保存错误问题

问题分析

当日期字段留空时,数据库存入03-20-0621而非空值,核心原因:

  • 空值传入gregdate函数时,被默认转换为初始日期(对应波斯历0621-03-20)
  • 你添加的自定义过滤器仅处理非空值返回,未明确空值的处理逻辑,且原update_value函数在空值场景下仍执行了日期转换

解决方案

方案1:修改原update_value函数(优先推荐)

在执行日期转换前先判断值是否为空,为空则直接返回空值,从源头避免无效转换:

function update_value( $value, $post_id, $field ) {
    // 空值直接返回,不执行后续转换逻辑
    if ( empty($value) ) {
        return apply_filters( 'wpp_acf_before_update_jalali_date', '' );
    }

    if ( ! wpp_is_active( 'acf_persian_date' ) ) {
        $value = gregdate( 'Y-m-d', $value );
    }

    return apply_filters( 'wpp_acf_before_update_jalali_date', $value );
}

方案2:优化自定义过滤器(适用于无法修改插件核心代码的场景)

调整过滤器逻辑,明确空值返回null(WordPress会将null识别为清空字段值),同时覆盖空字符串、空白字符等假值情况:

function customize_update_value( $value ) {
    // 检查值是否为空、空字符串、仅含空白字符
    if ( empty(trim($value)) ) {
        return null; // 返回null让数据库保存空值
    }
    return $value;
} 
add_filter( 'wpp_acf_before_update_jalali_date', 'customize_update_value', 10, 1 );

验证说明

  • 方案1直接拦截空值进入转换流程,彻底避免错误日期生成
  • 方案2通过过滤器修正空值的返回逻辑,强制数据库保存空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:50:08