Estou criando uma função que precisa ser chamada após a conclusão de um pedido no WooCommerce. Para isso, estou usando o gancho * 'woocommerce_order_status_completed' *. Quero verificar se o pedido tem um produto pertencente a uma categoria de produto específica. Se for esse o caso, o usuário será adicionado a um grupo no Wordpress. Para lidar com a lógica do grupo, estou usando a API de outro plug-in. Este método precisa do * group_id * e do * user_id *. A única coisa que sinto falta é obter o * user_id *.
Como posso obter o usuário (em detalhes: o ID) do meu pedido do WooCommerce?
código:
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?
}
}
Detalhes técnicos:
Versão do WordPress: 3.8
Versão WooCommerce: 2.1
fonte
WC_Order
classe WooCommerce vem com aget_user()
qual retorna o objeto de usuário oufalse
para convidados eget_user_id()
retorna a ID de usuário ou zero para convidados ... Você não precisa mais se preocupar com um retorno de chamada se estiver usando esses.