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

WooCommerce我的账户页新客户无订单时额外循环引发显示异常

故障原因

  • 核心触发点:当用户无任何历史订单时,代码中用到的$last_order变量为null(不存在有效值),此时直接调用$last_order->get_items()会抛出PHP致命错误,直接中断页面渲染流程,所以会出现容器消失、后续内容不加载的问题。而有订单的用户$last_order是有效订单对象,代码可以正常执行,bug就自动消失了。
  • 额外隐患:即使是有订单的场景,当前代码也存在稳定性问题:如果订单内的商品没有设置特色图,$product->get_image_id()返回0,不会进入if分支给$item_name赋值,后续echo的时候会抛出「未定义变量」警告,也可能影响页面布局稳定性。

修复方案

先做双重判断再执行订单商品遍历逻辑,同时给变量加默认值即可解决问题,参考修复后代码:

<?php 
// 先判断用户是否存在有效最近订单
if ( $last_order instanceof WC_Order ) :
  foreach ($last_order->get_items() as $item) :
    $product   = $item->get_product(); 
    $thumbnail = $product->get_image(array(50, 50));
    // 给item_name设置默认空值,避免未定义变量问题
    $item_name = '';
    if ($product->get_image_id() > 0) {
      $item_name = '<div class="item-thumbnail">' . $thumbnail . '</div>';
    }
    echo $item_name . $item->get_name();
  endforeach;
else :
  // 无订单时输出提示,不会中断页面渲染
  echo '<p>您还没有产生过任何订单</p>';
endif;
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:03