在ubercart中,如何在用户创建并关联到订单后获取uid和order_id


In ubercart how to get uid and order_id after the user is created and associated to order

我看到过类似的问题,如drupal::订单完成钩子和升级用户权限/角色,这将为我工作,除了我的订单从未达到完成,只有payment_received。此时uid为0。如果我在"客户完成结账"下添加一个条件操作来标记状态完成,因为uid仍然为0,它仍然不起作用。

所以我的问题是,在用户成功完成结帐并被创建之后,我如何获得uid和order对象?

当Ubercart创建用户时,它也会登录他们,所以你只需要这样做来获取uid:

global $user;
$uid = $user->uid;

最好是在hook_order()中提供,就像你链接到的类似问题中提到的。

如果没有与订单相关的uid,您应该能够像这样:

function MYMODULE_order($op, &$order, $arg2) {
  if ($op == 'update' && $arg2 == 'payment_received') {
    if ($order->uid) {
      $uid = $order->uid;
    }
    else {
      global $user;
      $uid = $user->uid;
    }
  }
}