Saya membuat fungsi yang perlu dipanggil setelah pesanan selesai dalam WooCommerce. Untuk ini saya menggunakan hook * * woocommerce_order_status_completed '*. Saya ingin memeriksa apakah pesanan memiliki produk yang termasuk dalam kategori produk tertentu. Jika demikian, pengguna akan ditambahkan ke grup di dalam Wordpress. Untuk menangani logika grup, saya menggunakan API plugin lain. Metode ini membutuhkan * group_id * dan * user_id *. Satu-satunya hal yang saya lewatkan adalah mendapatkan * user_id *.
Bagaimana saya bisa mendapatkan pengguna (secara detail: id), dari Pesanan WooCommerce saya?
kode:
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?
}
}
Rincian teknis:
Versi WordPress: 3.8
Versi WooCommerce: 2.1
sumber
WC_Order
Kelas WooCommerce hadir denganget_user()
yang mengembalikan objek pengguna ataufalse
untuk tamu danget_user_id()
yang mengembalikan id pengguna atau nol untuk tamu ... Anda tidak perlu lagi khawatir tentang panggilan balik jika Anda menggunakannya.