• Resolved roperjonathan

    (@roperjonathan)


    In WooCommerce Bookings, I have a bookable product which is basically a parent to three other bookable products. What I would like to achieve is that when the main parent product is booked, it then sets an availability rule on the 3 sub products to make them unavailable.

    To do this, I looked at the following from Adding availabilities programmatically to a bookable product on Woocommerce Bookings and then made a couple of amendments to then make the following:

    add_action('woocommerce_new_booking', 'modify_woocommerce_booking_date');
    
    function modify_woocommerce_booking_date($booking_id)
    {
    
        $booking = get_wc_booking($booking_id);
    
        $product_id = $booking->get_product_id();
    
        //If the bundle is being booked
        if ($product_id == 69096) {
            //This is the array that will contain all the availabilities
            $availabilities = array();
    
            //Formatting the start and end date of the bookings to be Y-m-d format
            $time = strtotime($booking->get_start_date());
            $startdate = date('Y-m-d', $time);
            $time = strtotime($booking->get_end_date());
            $enddate = date('Y-m-d', $time);
    
            //Create an array that contains the required fields (from_date and to_date are not necessary in some types of availabilities)
            $availability = array(
                'type' => 'custom', //I'm doing full day bookings rather than hours.
                'bookable' => 'no',
                'priority' => 10,
                'from_date' => wc_clean($startdate),
                'to_date' => wc_clean($enddate)
            );
    
            //If you need to add more than one availability, make a loop and push them all into an array
            array_push($availabilities, $availability);
            add_post_meta(69047, '_wc_booking_availability', $availabilities); //Individual Product One
            add_post_meta(69093, '_wc_booking_availability', $availabilities); //Individual Product Two
            add_post_meta(69094, '_wc_booking_availability', $availabilities); //Individual Product Three
    
        }
    }

    However, this doesn’t seem to work. Is there anything I’m missing? Do I need to include the time in my availability as well as the date?

Viewing 2 replies - 1 through 2 (of 2 total)
  • Hi @roperjonathan,

    This is the support forum for WooCommerce core, and we aren’t able to provide support for premium plugins or customizations of premium WooCommerce plugins on this forum.

    I’d recommend posting this question on the original Stackoverflow thread where you found that code to see if the developer who posted the original solution is able to help identify what’s missing here!

    Alternately, for assistance with customization of premium plugins, we recommend reaching out to someone on our customizations page.

    Plugin Support mouli a11n

    (@mouli)

    It’s been a while since we heard from you, so I’m marking this thread resolved. Hopefully, you’ve been able to resolve this, but if you haven’t, please open up a new topic and we’ll be happy to help out.

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Add avaliability rule to product programatically in WooCommerce Bookings’ is closed to new replies.