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

WooCommerce开发中foreach嵌套遍历追加内容到变量的解决方法

问题原因说明
  • 语法报错的核心原因是你没有结束前一行的$content字符串拼接语句,就直接插入了foreach循环,PHP不支持在表达式中间嵌套循环语句,所以抛出了语法错误。
  • 此外你的原有写法还有逻辑问题:循环内只调用了esc_html()处理商品名,但没有将处理后的内容追加到$content变量中,就算语法修复,商品名称也不会显示在最终通知里。
正确实现代码
foreach ($recent_orders as $recent_order) {
    $order_id = $recent_order->get_id();
    $_order = wc_get_order($order_id);
    $order_date = $_order->get_date_created();
    $order_status = $recent_order->get_status();
    $order_link = get_site_url();
    $order_link .= "/wp-admin/post.php?post=";
    $order_link .= $order_id;
    $order_link .= "&action=edit";
    $billing_first_name = $recent_order->get_billing_first_name() . ' ' . $recent_order->get_billing_last_name();
    $order_javena='Не јавено';

    $statusPrefix = "wc-";
    $_orderStatus = $statusPrefix . $order_status;
    $_order_status = $order_status_map[$_orderStatus];

    $date_format = get_option('date_format');
    $time_format = get_option('time_format');

    $format_order_date = $time_format . " - " . $date_format;
    $items = $recent_order->get_items(); // 获取订单商品数组

    // 先拼接表格行的前半部分内容,语句末尾加;结束当前表达式
    $content .= "<tr><td>" . esc_html($billing_first_name) . "</td><td>" . esc_html($order_date->date($format_order_date)) . "</td><td>" . esc_html($order_javena) . "</td><td><a href='" . esc_html($order_link) . "' target='_blank'>ПОГЛЕДНИ ДЕТАЛИ</a><br>";
    // 循环遍历商品,将每个商品名称追加到$content中,末尾加<br>实现换行
    foreach ( $items as $item ) {
        $product_name = $item['name'];
        $content .= esc_html($product_name) . "<br>";
    }
    // 最后拼接表格行的结束标签
    $content .= "</td></tr>";
}

如果需要展示商品数量、单价等其他信息,只需要在循环内调用WooCommerce对应方法获取数据,再追加到$content变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:06