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

如何修改WooCommerce后台订单列表商品缩略图代码,仅显示仍存在的商品并避免报错

如何修改WooCommerce后台订单列表商品缩略图代码,仅显示仍存在的商品并避免报错

嗨,这个问题处理起来其实很简单,核心就是在你原来的代码里加一个「商品是否存在」的判断,直接跳过已删除的商品就行,我给你具体说下怎么改:

首先找到你之前加的那一段显示订单商品缩略图的代码,重点看遍历订单项的循环部分。你只需要在尝试获取商品信息和缩略图之前,先检查这个商品是不是还存在——如果不存在,就直接跳过当前这个商品的处理,不去碰它,自然就不会报错了。

给你举个修改后的代码示例,你可以对应着自己的代码调整:

// 遍历订单里的每个商品项
foreach( $order->get_items() as $item_id => $item ) {
    // 获取当前商品的ID
    $product_id = $item->get_product_id();
    
    // 关键判断:检查商品是否存在
    $product = wc_get_product( $product_id );
    if ( ! $product ) {
        continue; // 商品不存在?直接跳过,不处理这个项
    }

    // 下面是你原来的获取并输出缩略图的代码,保留就行
    $thumbnail = $product->get_image( array( 32, 32 ) );
    echo '<a href="' . get_edit_post_link( $product_id ) . '">' . $thumbnail . '</a>';
}

简单解释下:wc_get_product()这个函数如果遇到已删除的商品,会返回false,这时候我们用continue直接跳过当前循环项,就不会去执行后面获取缩略图的代码,从根源上避免了因为调用不存在商品的方法而产生的报错。

要是你原来的代码里是用get_post()这类函数来处理商品,也可以用get_post_status($product_id)来检查,比如if ( ! get_post_status( $product_id ) ) continue;,不过更推荐用wc_get_product(),因为它更贴合WooCommerce的商品逻辑,能兼容不同的商品类型。

这样改完之后,后台订单列表里就只会显示那些还存在的商品的缩略图,已删除的商品会被自动忽略,完全不会再出现报错啦~

备注:内容来源于stack exchange,提问作者user21098450

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:08:11