【发布时间】:2016-07-09 21:30:40
【问题描述】:
我尝试从其中一个订单项 ID 中获取相关订单(订单 ID)。
以一个案例为例:
编辑订单并删除订单项(由 Ajax 完成)时,Woocommerce 仅提供挂钩 "woocommerce_before_delete_order_item" 并仅传递 $item_id。 (woo 函数执行 sql 而不是 WP 环境)。我需要“归属”订单 ID 才能采取行动!
到目前为止,我的解决方案是遍历所有订单并比较项目 ID,并在匹配发生时中断并返回订单 ID。
当在当前商店中保持 10000 个订单甚至更多订单时,这是一种减慢或“笨拙”的方式。
这不起作用:
wp_get_post_parent_id ( $item_id )
但我希望有类似的电话,还是我需要进行 DB SQL 搜索?任何涉及mySQL 的答案,请使其“准备好复制和粘贴”。我擅长 PHP,但不会处理或从不编写自己的 SQL。
感谢您的帮助!以下是我目前的解决方案:
$order_id = my_wc_get_order_from_item_id($item_id);
function my_wc_get_order_from_item_id($id) {
$orders = get_posts('post_type=shop_order&numberposts=-1&post_status=publish');
foreach($orders as $obj) {
$order = new WC_Order($obj->ID);
if ( count( $order->get_items('line_item') ) > 0 ) {
foreach($order->get_items('line_item') as $item_id => $item ) {
if($item_id == $id) $return_value = $obj->ID;
if(isset($return_value)) break;
}
}
unset($order);
if(isset($return_value)) break;
}
if(isset($return_value)) return $return_value;
else return 0;
}
【问题讨论】:
标签: woocommerce edit orders items