如果用户购买特定产品(产品ID的数组),我想将订单状态更改为已取消,以取消较早的购买
我正在使用自定义功能get_order_ids_from_bought_items()
from this answer thread,该功能允许我获取与给定产品ID相匹配的特定客户的订单ID。
// The defined product IDs
product_ids = array(183,153);
$linked_order_ids = get_order_ids_from_bought_items(product_ids); //output : array(12,13);
如果客户购买了其中任何一种产品===> $special products = array(1788,123);
我想将
$linked_order_ids
的状态更改为已取消
由于get_order_ids_from_bought_items()
也将获得最后的订单,因此我正在使用array_pop($linked_order_ids );
从该函数的输出中删除最后一项
add_action('woocommerce_order_status_changed', 'woo_order_status_change_custom', 10, 3);
function changestatus()
{
$product_ids = $newcustomer->wpprolister_array_intersect();
$orderidstoremove = get_order_ids_from_bought_items($product_ids );
$removed = array_pop($orderidstoremove);
foreach ($removed as $remove) {
$order = wc_get_order( $remove );
$order->update_status('cancelled', 'As you have brought new package this package has been cancelled');
}
}
但是不能正常工作。
答案 0 :(得分:1)
使用此挂钩时,您不能使用当前用户ID ,而需要从WC_Order
对象中检索用户ID ...然后{ {1}}无法正常工作。
您将必须更改所有相关的现有功能代码,才能处理已定义的用户ID
此外,函数的名称与钩住的回调段(在$newcustomer->wpprolister_array_intersect()
中)不匹配…
因此您的代码必须类似于:
add_action()