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

WordPress插件PHP代码:foreach循环中无法为消息变量追加链接

问题排查与解决方案

针对你遇到的链接无法追加到邮件内容的问题,从以下几个方向排查:

1. 日期匹配逻辑错误

  • 检查$val['confirmed_at']的类型:如果数据库中confirmed_at存储的是datetime格式字符串(如2024-05-20 14:30:00),直接用date('d-m-Y', $val['confirmed_at'])会出错,因为date()函数需要传入时间戳。需先将字符串转为时间戳:
    $confirmed_date = date('d-m-Y', strtotime($val['confirmed_at']));
    
  • 时区不一致问题:WordPress的时区设置可能与服务器时区不同,用time()获取的时间会和数据库中的日期不匹配。改用WordPress内置的current_time('timestamp')获取符合站点时区的时间戳:
    $current_date = date('d-m-Y', current_time('timestamp'));
    

2. 严格相等判断的类型不匹配

$val['pco'] === '650'使用了严格相等(===),会同时检查值和类型:

  • 如果数据库中pco是整数类型,$val['pco']是整数,和字符串'650'比较会返回false。可以改为松散相等(==),或者统一类型:
    // 方法1:松散相等
    if($confirmed_date === $current_date && $val['pco'] == '650')
    
    // 方法2:统一为字符串比较
    if($confirmed_date === $current_date && (string)$val['pco'] === '650')
    
    // 方法3:直接用整数比较(如果pco是整数)
    if($confirmed_date === $current_date && $val['pco'] === 650)
    

3. 加入调试代码验证条件触发

在循环内添加日志输出,确认条件是否真的满足:

// 先开启WP_DEBUG(wp-config.php中定义WP_DEBUG为true)
$current_date = date('d-m-Y', current_time('timestamp'));
foreach( $results as $key => $val ){
    $confirmed_date = date('d-m-Y', strtotime($val['confirmed_at']));
    // 输出当前循环的关键数据到debug.log
    error_log("循环数据:pco={$val['pco']},确认日期={$confirmed_date},当前日期={$current_date}");
    
    if($confirmed_date === $current_date && $val['pco'] === '650'){
        error_log("触发pdv_message_a追加:{$val['link']}");
        $pdv_message_a .= $val['link'] . "\n";
    }
    // 其他两个if同理添加日志
}

查看wp-content/debug.log文件,就能清楚看到条件是否触发,以及触发时的链接内容。

4. 优化代码结构(可选)

将重复的日期判断提取出来,用switch简化逻辑,减少冗余:

$current_date = date('d-m-Y', current_time('timestamp'));
foreach( $results as $key => $val ){
    $confirmed_date = date('d-m-Y', strtotime($val['confirmed_at']));
    if($confirmed_date !== $current_date){
        continue; // 日期不匹配直接跳过后续判断
    }
    
    switch($val['pco']){
        case '650':
            $pdv_message_a .= $val['link'] . "\n";
            break;
        case '620':
            $pdv_message_b .= $val['link'] . "\n";
            break;
        case '660':
            $pdv_message_p .= $val['link'] . "\n";
            break;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:40:38