Я хочу изменить статус заказа на отмененный для более ранних покупок, если пользователь покупает определенный продукт (массив идентификаторов продуктов)
Я использую пользовательскую функцию get_order_ids_from_bought_items()
из этой ветки ответов, которые позволяют мне получить идентификаторы заказов для конкретного клиента, которые соответствуют указанным идентификаторам продукта.
// 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');
}
}
Но, например, не работает.