如何修改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
相关产品推荐
相关产品推荐

