Tôi đang thực hiện một chức năng cần được gọi sau khi đơn hàng được hoàn thành trong WooC Commerce. Đối với điều này, tôi đang sử dụng hook * 'wooc Commerce_order_status_completed' *. Tôi muốn kiểm tra xem đơn đặt hàng có một sản phẩm thuộc danh mục sản phẩm cụ thể không. Nếu đây là trường hợp, người dùng sẽ được thêm vào một nhóm trong Wordpress. Để xử lý logic nhóm, tôi đang sử dụng API của plugin khác. Phương thức này cần * group_id * và * user_id *. Điều duy nhất tôi thiếu là nhận được * user_id *.
Làm cách nào tôi có thể có được người dùng (chi tiết: id), từ Đơn hàng WooC Commerce của tôi?
mã:
function isa_set_isa_member_group_after_order_completed($order_id) {
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach($items as $item) {
$product = $order->get_product_from_item($item);
$has_membership_product = has_term('Lidmaatschap','product_cat',$product->post);
if($has_membership_product) {
break;
}
}
$group = Groups_Group::read_by_name('ISA Leden');
if(!group) {
return; // TODO: Add error message + email?
}
$user_id = 0 // TODO: Get user id from order.
$user_group = array(
"user_id" => $user_id,
"group_id" => $group->group_id
);
$result = Groups_User_Group::create($user_group);
if(!result) {
return; // TODO: Add error message + email?
}
}
Chi tiết kỹ thuật:
Phiên bản WordPress: 3.8
Phiên bản WooC Commerce: 2.1
WC_Order
đi kèm với lớpget_user()
trả về đối tượng người dùng hoặcfalse
cho khách vàget_user_id()
trả về id người dùng hoặc số 0 cho khách ... Bạn không còn phải lo lắng về việc gọi lại nếu bạn đang sử dụng chúng.