有没有办法在WooCommerce预订中以编程方式添加/删除资源的可用性规则?

问题描述

我正在尝试使用WooCommerce Bookings创建三个房间。理想情况下,我希望这些房间既可以作为一个捆绑包一起预订,也可以作为单独的预订单独预订。

现在,WooCommerce Bookings不支持功能,所以我的计划是:

  • 拥有3种不同的客房产品,它们具有各自独立的资源,客户可以分别预订。
  • 然后再打开一个页面,其中使用自己的资源将3个房间捆绑在一起。

但是,问题是,如果其中一个房间是单独预订的,那么我需要确保捆绑包不适合预订。

为此,我想每次预订其中一种产品时,都应在相关资源中添加一个可用性规则。但是,从查看documentation来看,我看不到任何允许我以编程方式向资源中添加可用性规则的东西。

我确实能实现这一目标的唯一方法是通过编程方式以类似于以下内容的方式创建预订,但我不希望系统看到多个预订:

 * Code goes in theme functions.PHP
 *
 * In this example we're creating a booking 1 week after a booking is paid for.
 * This does not create another order or payment,just an additional booking.
 * $exact is false meaning if our slot is taken,the next available slot will be used.
 * @link https://docs.woocommerce.com/document/creating-bookings-programatically/
 */
function auto_create_followup_booking( $booking_id ) {
    
    // Get the prevIoUs booking from the ID
    $prev_booking = get_wc_booking( $booking_id );
    
    // Don't want follow ups for follow ups
    if ( $prev_booking->get_parent_id() <= 0 ) {
        // Set the follow up data
        $new_booking_data = array(
            'start_date'  => strtotime( '+1 week',$prev_booking->get_start() ),// same time,1 week on
            'end_date'    => strtotime( '+1 week',$prev_booking->get_end() ),1 week on
            'resource_id' => $prev_booking->get_resource_id(),// same resource
            'parent_id'   => $booking_id,// set the parent
        );
        // Did the prevIoUs booking have persons?
        $persons = $prev_booking->get_persons();
        if ( is_array( $persons ) && 0 < count( $persons ) ) {
            $new_booking_data['persons'] = $persons;
        }
        // Was the prevIoUs booking all day?
        if ( $prev_booking->is_all_day() ) {
            $new_booking_data['all_day'] = true;
        }
        create_wc_booking( 
            $prev_booking->get_product_id(),// Creating a booking for the prevIoUs bookings product
            $new_booking_data,// Use the data pulled above
            $prev_booking->get_status(),// Match prevIoUs bookings status
            false                            // Not exact,look for a slot
        );
    }
}
add_action( 'woocommerce_booking_in-cart_to_paid','auto_create_followup_booking' );
add_action( 'woocommerce_booking_unpaid_to_paid','auto_create_followup_booking' );
add_action( 'woocommerce_booking_confirmed_to_paid','auto_create_followup_booking' );

那么,有什么方法可以以编程方式在资源中添加/删除一个可用性规则,而该规则可能是我在文档中错过的,还是创建预订是我可以这样做的唯一方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)