Присвойте идентификатор пользователя заказу, созданному программно в Woocommerce 3 - PullRequest
0 голосов
/ 17 мая 2018

Я использую 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), но не кем, а пользователь вообще не может видеть свои заказы.

Я загрузил сайт во временный домен, чтобы вы, ребята, могли видеть: https://360transformations.000webhostapp.com/?page_id=446

Ответы [ 4 ]

0 голосов
/ 25 марта 2019

Вы можете сделать это https://developer.wordpress.org/reference/functions/wp_set_current_user/

, и customer_id будет автоматически установлен woocommerce.

0 голосов
/ 17 мая 2018

Вам нужно будет добавить идентификатор клиента, используя set_customer_id() Метод установки CRUD:

$order->set_customer_id( $user_id );

Где $user_id должно быть текущим идентификатором пользователя или определенным идентификатором пользователя…Этот идентификатор будет 0 для гостевых пользователей.Для получения текущего идентификатора пользователя вы будете использовать:

$user_id = get_current_user_id();
$order->set_customer_id( $user_id );
0 голосов
/ 17 мая 2018

Присвойте идентификатор пользователя заказу, используйте опции ниже

Вариант 1:

$userid = get_current_user_id();
$order = wc_create_order(array('customer_id'=>$userid));

Вариант 2:

добавить приведенный ниже код после функции wc_create_order ()

$userid = get_current_user_id();
update_post_meta($order->id, '_customer_user', $userid);
0 голосов
/ 17 мая 2018

Woocommerce связывает заказ с пользователем по метаданным поста.При размещении нового заказа woocommerce создает новую запись.И устанавливает _customer_user мета-ключ для идентификатора пользователя, который размещает заказ.Так что, если вы хотите связать заказ с другим пользователем;скажем, экземпляр с пользователем B, у которого есть идентификатор пользователя 20. Затем просто обновите мета-значение _customer_user до 20 определенного заказа (записи).

Кроме того, существуют другие мета-ключи, откуда wooocommerce может получитьимя, фамилия и другая информация.Вам также может потребоваться обновить эти мета значения в соответствии с информацией о новом пользователе.

Итак, просто обновите мета-значения, и все готово.

Проверьте изображение ниже

woocommerce - Опубликовать мета-ключответственный за привязку заказа к пользователю.

Возможный дубликат:

Программное создание нового заказа в Woocommerce

...