Ich erstelle eine Funktion, die aufgerufen werden muss, nachdem eine Bestellung in WooCommerce abgeschlossen wurde. Hierfür verwende ich den Hook * 'woocommerce_order_status_completed' *. Ich möchte überprüfen, ob die Bestellung ein Produkt einer bestimmten Produktkategorie enthält. In diesem Fall wird der Benutzer zu einer Gruppe in Wordpress hinzugefügt. Um die Gruppenlogik zu handhaben, benutze ich die API eines anderen Plugins. Diese Methode benötigt die * group_id * und die * user_id *. Ich vermisse nur die * user_id *.
Wie kann ich den Benutzer (im Detail: die ID) aus meiner WooCommerce-Bestellung abrufen?
Code:
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?
}
}
Technische Details:
WordPress-Version: 3.8
WooCommerce Version: 2.1
WC_Order
Klasse wirdget_user()
das Benutzerobjekt oderfalse
für Gäste undget_user_id()
die Benutzer-ID oder die Null für Gäste zurückgegeben. Sie müssen sich keine Gedanken mehr über einen Rückruf machen, wenn Sie diese verwenden.