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

foreach遍历shipping_option数组返回非指定订单对应值问题求助

问题根因

最常见的原因是$delivery_date_time数组未在处理单个订单前初始化:如果这段代码处于多订单循环处理逻辑、或者$delivery_date_time是类成员属性/全局变量,上一次订单处理后数组内残留了历史值,未清空就直接追加当前订单的配送选项名称,就会出现数据不符合预期的问题。

修复方案

在获取当前订单配送选项前,先初始化$delivery_date_time为空数组,修正后的代码如下:

// 初始化数组,清空历史残留数据
$delivery_date_time = [];
$shipping_options = $order->get_items( 'shipping_option' );
        
foreach ( $shipping_options as $item_id => $item  ) {
    $delivery_date_time[] = $item['name'];
}
$this->xml_append( $order_xml, 'CustomField2', implode( PHP_EOL, $delivery_date_time ) );

额外排查点

如果修复后仍有问题,可以按以下方向排查:

  • 输出调试当前$order的ID:var_dump($order->get_id());,确认当前处理的$order是你指定的目标订单,避免循环过程中$order变量被意外覆盖。
  • 调试$shipping_options的实际返回值:var_dump($shipping_options);,确认返回内容完全匹配当前订单的配送选项,没有被全局缓存污染。
  • 如果是WooCommerce场景,检查是否有第三方插件/自定义钩子修改了配送选项name字段的输出,导致返回值和预期不符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:42:02