Заказы WooCommerce: создание заказа на бронирование программно

Я пытался это в течение нескольких часов, с другим кодом & Читая каждый документ по бронированию, я могу найти — но я не могу понять, как именно я это делаю.

Мое самое большое вдохновение исходит от WooCommerce Booking Doc, но это просто добавляет последующее бронирование к существующему заказу. Но как мне сделать это с нуля?

Я попробовал следующее, но не могу заставить его работать.

  1. Я создаю новый заказ с:

    $address = array(
    'first_name' => 'TestFirst',
    'last_name'  => 'TestLast',
    'company'    => 'Overflow',
    'email'      => '[email protected]',
    'phone'      => '777-777-777-777',
    'address_1'  => '35 Main Street',
    'address_2'  => '',
    'city'       => 'Net York',
    'state'      => 'NY',
    'postcode'   => '2323',
    'country'    => 'US'
    
    $order = wc_create_order();
    $order->set_address( $address, 'billing' );
    $order->set_address( $address, 'shipping' );
    
  2. Я создаю бронирование по

    $new_booking_data = array(
    'start_date'  => strtotime( '+1 week', $prev_booking->start ), // same time, 1 week on
    'end_date'    => strtotime( '+1 week', $prev_booking->end ), // same time, 1 week on
    'resource_id' => $prev_booking->resource_id, // same resource
    'parent_id'   => $booking_id
    )
    create_wc_booking( $product_id, $new_booking_data = array(), $status =     'confirmed', $exact = false )
    
  3. И вот я застрял, что мне теперь делать? Я полагаю, что мне нужно связать идентификатор бронирования с заказом от 1. — но я не совсем уверен, как.

Что я делаю не так?

Благодарю.

2

Решение

В вашем коде вы определяете этот массив первым (с отсутствующим ; в конце массива).

Тогда вместо использования $new_booking_data определенная переменная просто в вашей функции create_wc_booking(), вы присваиваете ему пустой массив, который NULL-код выше. Таким образом, вы должны установить это так:

// Defined array variable
$new_booking_data = array(
'start_date'  => strtotime( '+1 week', $prev_booking->start ), // same time, 1 week on
'end_date'    => strtotime( '+1 week', $prev_booking->end ), // same time, 1 week on
'resource_id' => $prev_booking->resource_id, // same resource
'parent_id'   => $booking_id
); // <= Missing ";" HERE

// Define this variables outside your function
$status = 'confirmed';
$exact = false;

// Now you just put your variables simply like this
create_wc_booking( $product_id, $new_booking_data, $status, $exact );

Или вы можете указать значения тоже так:

create_wc_booking( $product_id, $new_booking_data, 'confirmed', false );

Это должно лучше работать сейчас … Я надеюсь.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]