WooCommerce内で注文が完了した後に呼び出す必要がある関数を作成しています。このために、私は* 'woocommerce_order_status_completed' *フックを使用しています。注文に特定の製品カテゴリに属する製品があるかどうかを確認したい。この場合、ユーザーはWordpress内のグループに追加されます。グループロジックを処理するために、別のプラグインのAPIを使用しています。このメソッドには、* group_id *および* user_id *が必要です。私が見逃しているのは、* user_id *を取得することだけです。
WooCommerce Orderからユーザー(詳細:ID)を取得するにはどうすればよいですか?
コード:
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?
}
}
技術的な詳細:
WordPressバージョン:3.8
WooCommerceバージョン:2.1
WC_Order
クラスにはget_user()
、ユーザーオブジェクトまたはfalse
ゲストget_user_id()
を返し、ゲストIDまたはゼロをゲストに返します...これらを使用している場合、コールバックを心配する必要はありません。