Я делаю функцию, которую нужно вызывать после выполнения заказа в WooCommerce. Для этого я использую * 'woocommerce_order_status_completed' * hook. Я хочу проверить, есть ли в заказе товар, относящийся к определенной товарной категории. Если это так, пользователь будет добавлен в группу в Wordpress. Для обработки групповой логики я использую API другого плагина. Этот метод требует * group_id * и * user_id *. Единственное, чего мне не хватает, это получить * user_id *.
Как я могу получить пользователя (подробно: идентификатор) из моего заказа WooCommerce?
код:
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?
}
}
Технические подробности:
Версия WordPress: 3.8
WooCommerce версия: 2.1
источник
WC_Order
классом WooCommerce,get_user()
который возвращает объект пользователя илиfalse
для гостей, иget_user_id()
который возвращает идентификатор пользователя или ноль для гостей ... Вам больше не нужно беспокоиться об обратном вызове, если вы их используете.