Sto creando una funzione che deve essere chiamata dopo che un ordine è stato completato all'interno di WooCommerce. Per questo sto usando l'hook * 'woocommerce_order_status_completed' *. Voglio verificare se l'ordine ha un prodotto appartenente a una specifica categoria di prodotti. In tal caso, l'utente verrà aggiunto a un gruppo in Wordpress. Per gestire la logica di gruppo, sto usando l'API di un altro plugin. Questo metodo richiede * group_id * e * user_id *. L'unica cosa che mi manca è ottenere * user_id *.
Come posso ottenere l'utente (in dettaglio: l'id) dal mio ordine WooCommerce?
codice:
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?
}
}
Dettagli tecnici:
Versione di WordPress: 3.8
Versione WooCommerce: 2.1
WC_Order
fornita la classe WooCommerceget_user()
che restituisce l'oggetto utente ofalse
per gli ospiti eget_user_id()
che restituisce l'id utente o zero per gli ospiti ... Non è più necessario preoccuparsi di una richiamata se si utilizzano quelli.