Estoy haciendo una función que debe llamarse después de que se complete un pedido dentro de WooCommerce. Para esto estoy usando el gancho * 'woocommerce_order_status_completed' *. Quiero verificar si el pedido tiene un producto que pertenece a una categoría de producto específica. Si este es el caso, el usuario se agregará a un grupo dentro de Wordpress. Para manejar la lógica de grupo, estoy haciendo uso de la API de otro complemento. Este método necesita el * group_id * y el * user_id *. Lo único que me falta es obtener el * user_id *.
¿Cómo puedo obtener el usuario (en detalle: la identificación) de mi pedido de 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?
}
}
Detalles técnicos:
Versión de WordPress: 3.8
Versión de WooCommerce: 2.1
fuente
WC_Order
Viene con la clase WooCommerceget_user()
que devuelve el objeto de usuario ofalse
para invitados yget_user_id()
que devuelve la identificación de usuario o cero para invitados ... Ya no necesita preocuparse por una devolución de llamada si los está utilizando.