Я пытался это в течение нескольких часов, с другим кодом & Читая каждый документ по бронированию, я могу найти — но я не могу понять, как именно я это делаю.
Мое самое большое вдохновение исходит от WooCommerce Booking Doc, но это просто добавляет последующее бронирование к существующему заказу. Но как мне сделать это с нуля?
Я попробовал следующее, но не могу заставить его работать.
Я создаю новый заказ с:
$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' );
Я создаю бронирование по
$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 )
И вот я застрял, что мне теперь делать? Я полагаю, что мне нужно связать идентификатор бронирования с заказом от 1. — но я не совсем уверен, как.
Что я делаю не так?
Благодарю.
В вашем коде вы определяете этот массив первым (с отсутствующим ;
в конце массива).
Тогда вместо использования $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 );
Это должно лучше работать сейчас … Я надеюсь.
Других решений пока нет …