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

为WordPress插件PHP代码添加IF ELSE实现邮件日期颜色分级

解决PropertyHive插件邮件日期颜色分级显示问题

需求说明

我安装了PropertyHive这款WordPress插件,它会向站点所有者发送包含「关键日期」详情的邮件。目前仅在截止日期已过时,邮件中对应文本会显示为红色的「Originally due on X date」。现需修改为以下颜色规则:

  • 30天内到期:绿色
  • 15天内到期:黄色
  • 不足15天/已逾期:红色

原代码片段

$details = '';
$schedule_start_date = new DateTime($start_date);
if ( $due_date < $schedule_start_date ){
    // was due in the past
    $details = '<span style="color:#900">' .
     __( 'Originally due on', 'propertyhive' ) 
    . ' ' . $due_date->format('jS M') . '</span>';

修改后的完整代码

$details = '';
$schedule_start_date = new DateTime($start_date);
// 计算基准日期与截止日期的天数差
$date_diff = $schedule_start_date->diff($due_date);
// 转换为带正负的天数:正数=还有N天到期,负数=已逾期N天
$days_until_due = $date_diff->days * ($date_diff->invert ? -1 : 1);

// 根据天数区间设置颜色和显示文本
if ($days_until_due > 30) {
    // 30天以上到期:绿色
    $color = '#008000';
    $display_text = __( 'Due on', 'propertyhive' );
} elseif ($days_until_due > 15) {
    // 15-30天内到期:黄色
    $color = '#FFFF00';
    $display_text = __( 'Due on', 'propertyhive' );
} elseif ($days_until_due >= 0) {
    // 0-15天内到期:红色
    $color = '#900';
    $display_text = __( 'Due on', 'propertyhive' );
} else {
    // 已逾期:红色,显示原到期提示
    $color = '#900';
    $display_text = __( 'Originally due on', 'propertyhive' );
}

// 组装最终的HTML内容,用esc_attr确保输出安全
$details = '<span style="color:' . esc_attr($color) . '">' . $display_text . ' ' . $due_date->format('jS M') . '</span>';

代码逻辑说明

  1. 日期差计算:使用DateTime::diff()获取基准日期($schedule_start_date)与截止日期($due_date)的间隔,通过$date_diff->invert判断截止日期是在基准日期之前还是之后,转换为带正负的天数。
  2. 条件分支:
    • 剩余天数>30:绿色显示「Due on」
    • 15<剩余天数≤30:黄色显示「Due on」
    • 0≤剩余天数≤15:红色显示「Due on」
    • 剩余天数<0(已逾期):红色显示「Originally due on」
  3. 安全处理:用esc_attr()包裹颜色值,避免潜在的XSS漏洞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:27:15