3

我已经尝试了几个小时,使用不同的代码并阅读我能找到的预订时的每个文档 - 但我似乎无法弄清楚我究竟是如何做到这一点的。

我最大的灵感来自WooCommerce Booking Doc,但这只是为现有订单添加了后续预订。但是我该如何从头开始呢?

我尝试了以下,但不能真正让它工作。

  1. 我生成一个新订单:

    $address = array(
        'first_name' => 'TestFirst',
        'last_name'  => 'TestLast',
        'company'    => 'Overflow',
        'email'      => 'test@test.com',
        '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. 在这里我被困住了,我现在该怎么办?我想我必须将预订 ID 与 1 的订单联系起来。 - 但我不确定如何。

我做错了什么?

谢谢。

4

2 回答 2

3

在您的代码中,您首先定义此数组(;在数组末尾缺少)。

然后,不是$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 );

这现在应该更好地工作......我希望。

于 2017-02-15T09:55:43.187 回答
0

我有同样的问题,我正在尝试添加order_item_id$new_booking_data它不起作用。

解决方案在这里:https ://wordpress.stackexchange.com/questions/222799/woocommerce-bookings-plugin-not-saving-order-id

Gerben Van Dijk 是该解决方案的作者。

于 2019-03-18T13:08:01.440 回答