WooCommerce'da bir sipariş tamamlandıktan sonra çağrılması gereken bir işlev yapıyorum. Bunun için * 'woocommerce_order_status_completed' * hook kullanıyorum. Siparişin belirli bir ürün kategorisine ait bir ürünü olup olmadığını kontrol etmek istiyorum. Bu durumda, kullanıcı Wordpress içindeki bir gruba eklenecektir. Grup mantığını ele almak için başka bir eklentinin API'sini kullanıyorum. Bu yöntem * group_id * ve * user_id * işlevine ihtiyaç duyar. Kaçırdığım tek şey * user_id * almak.
WooCommerce Siparişimden kullanıcıyı (ayrıntılı olarak: kimliği) nasıl alabilirim?
kod:
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?
}
}
Teknik detaylar:
WordPress sürümü: 3.8
WooCommerce sürümü: 2.1
WC_Order
sınıfıget_user()
, kullanıcı nesnesini döndüren veyafalse
konuklar için gelen ve misafirlerget_user_id()
için kullanıcı kimliğini veya sıfırı döndüren gelir ... Bunları kullanıyorsanız artık bir geri arama için endişelenmenize gerek yoktur.