Woocommerce多商品订单中如何获取指定商品元字段值?
问题修复方案
你的问题出在当前代码每次循环都会用新商品的元数据覆盖$startdate变量,如果订单最后一个商品是不含该元字段的商品B,最终$startdate就会是空值。
修复后的代码
$startdate = ''; foreach ($order->get_items() as $item_id => $item ) { // 检查当前商品是否存在指定元字段 if ($item->get_meta('Start Date')) { $startdate = $item->get_meta('Start Date'); // 因为每个订单只有商品A有该元键,找到后直接跳出循环提升效率 break; } }
代码说明
- 先初始化
$startdate为空字符串,避免未定义变量问题 - 遍历订单商品时,先判断当前商品是否存在
Start Date元字段 - 找到目标元字段后立即赋值并跳出循环,不用继续遍历剩余商品
- 这样无论商品A在订单商品列表的哪个位置,都能正确获取到对应的元值
内容的提问来源于stack exchange,提问作者Matthew Bernier
相关产品推荐
相关产品推荐

