Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将用户ID分配给在Woocommerce 3中以编程方式创建的订单_Php_Wordpress_Woocommerce_Orders - Fatal编程技术网

Php 将用户ID分配给在Woocommerce 3中以编程方式创建的订单

Php 将用户ID分配给在Woocommerce 3中以编程方式创建的订单,php,wordpress,woocommerce,orders,Php,Wordpress,Woocommerce,Orders,我使用Woocommerce在Wordpress上管理我的产品,但用户通过第三方服务付费 我正在尝试手动创建新订单,并将其分配给当前用户。订单确实已创建并记录,但以下代码仅记录项目和时间,没有用户的详细信息: global $woocommerce; $address = array( 'first_name' => $_GET['FirstName'], 'last_name' => $_GET['LastName'], 'compa

我使用Woocommerce在Wordpress上管理我的产品,但用户通过第三方服务付费

我正在尝试手动创建新订单,并将其分配给当前用户。订单确实已创建并记录,但以下代码仅记录项目和时间,没有用户的详细信息:

  global $woocommerce;

  $address = array(
      'first_name' => $_GET['FirstName'],
      'last_name'  => $_GET['LastName'],
      'company'    => $_GET['CompanyName'],
      'email'      => $_GET['EmailAddress'],
      'phone'      => $_GET['MobilePhoneNumber'],
      'address_1'  => '',
      'address_2'  => '',
      'city'       => '',
      'state'      => '',
      'postcode'   => '',
      'country'    => $_GET['countryCode']
  );

  $order = wc_create_order();

  foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {
            $item_id = $order->add_product(
                    $values['data'], $values['quantity'], array(
                'variation' => $values['variation'],
                'totals' => array(
                    'subtotal' => $values['line_subtotal'],
                    'subtotal_tax' => $values['line_subtotal_tax'],
                    'total' => $values['line_total'],
                    'tax' => $values['line_tax'],
                    'tax_data' => $values['line_tax_data'] // Since 2.2
                )
                    )
            );
        }
  $order->set_address( $address, 'billing' );
  //
  $order->calculate_totals();
  $order->update_status("Completed", 'Imported order', TRUE);  
$order->save();
管理员可以查看订单(在woocommerce->orders下),但看不到是谁下的订单,用户根本看不到他的订单


我已经将网站上传到了一个临时域中,所以你们可以看到:

Woocommerce通过post的元数据与用户链接订单。当下了新订单后,woocommerce会创建一个新的帖子。并将
\u customer\u user
元键设置为下单的用户id。因此,如果您想将订单与其他用户链接;假设具有用户id为20的用户B的实例。然后只需将
\u customer\u user
的meta值更新为特定订单(post)的20

此外,wooocommerce还可以通过其他元键获取名字、姓氏和其他信息。您可能还需要根据新的用户信息更新这些元数据

所以,只要更新元值,就可以开始了

检查下图

可能重复:


您必须使用CRUD setter方法添加客户ID:

$order->set_customer_id( $user_id );
其中,
$user\u id
应为当前用户id或定义的用户id。对于来宾用户,此id将为
0
。要获取当前用户ID,您将使用:

$user_id = get_current_user_id();
$order->set_customer_id( $user_id );

将用户ID分配给订单,使用以下选项

备选案文1:

$userid = get_current_user_id();
$order = wc_create_order(array('customer_id'=>$userid));
备选案文2:

在wc_create_order()函数之后添加以下代码

你可以这样做

客户id将由woocommerce自动设置

$userid = get_current_user_id();
update_post_meta($order->id, '_customer_user', $userid);