在Woocommerce订单页面上,我有订单中的项目,我想通过这些项目循环并根据产品ID 排除特定项目。
$order->get_order_number();
$items = $order->get_items();
foreach( $items as $key => $value) :
$exclude = $value->get_product_id();
if( in_array($exclude, array('3404') ) {
unset($items[$key]);
}
}
endforeach;
$new_items = array_values($items);
我认为这会遍历原始数组,删除其$item
的{{1}},然后重新索引。
我在这里没有运气。有什么想法吗?
已解决->
$product_id == 3404
答案 0 :(得分:3)
您应该能够做到这一点:
$items = array_filter($order->get_items(), function($item) {
return $item->get_product_id() != 3404;
});
此操作遍历$items
,并像foreach
一样将每个值传递给$item
。如果array_filter
的回调返回true
,则该值将保留其他位置。
您甚至可以直接传递$order->get_items()
,而无需将项目提取到数组中。
另外,如果您需要按照评论中的要求排除多个,则可以这样做:
$items = array_filter($order->get_items(), function($item) {
return !in_array($item->get_product_id(), [3404, 6890]);
});