Our Booking and Appointment Plugin for WooCommerce follows a tiered pricing model when the booking type is duration-based booking. This means if the booking price of the product is set to 100, then the cost for a 1-hour duration is $100, and for 2 hours it is $200, and so on.
But in case you want to change this pricing logic and set customized price for each timeslot, you can effortlessly achieve this using the code snippet below. Let’s dive in to learn how to customize the pricing based on appointment durations.
Solution: Optimize Duration Pricing in Booking and Appointment Plugin Based on Selected Durations
The code snippet will dynamically change the final price calculation based on selected time-slots of specific products when using the Booking and Appointment Plugin.
/** * Manipulating the Duration price based on the selected duration. * * @param string $final_price Final Price Calculated based on the Settings * @param string $product_id Product ID * @param string $booking_settings Booking Settings * @param string $post POST data */ function bkap_final_duration_price_callback( $final_price, $product_id, $booking_settings, $post ) { // here 2587 is Product ID, array is the combination of duration => price $prices = array( '62' => array( '1' => '1000', '2' => '1500', '3' => '2000', '4' => '2750' ), // 1 = 30 mins, 2 = 1 hour, 3 = 1.5 hour, 4 = 2 hours '2589' => array( '1' => '20', '2' => '30', '3' => '35', '4' => '45' ), ); if ( in_array( $product_id, array_keys( $prices ) ) ) { $price_basedon_durations = $prices[ $product_id ]; $selected_duration = $post['bkap_duration']; $final_price = isset( $price_basedon_durations[ $selected_duration ] ) ? $price_basedon_durations[ $selected_duration ] : $final_price; } return $final_price; } add_filter( 'bkap_final_duration_price', 'bkap_final_duration_price_callback', 10, 4 );
Output
As shown in the image, if the original price of the booking product is $25 we will set a customized prices based on the selected duration. When a customer selects this booking service for 1 hour, the code will adjust the booking price to $100 based on the specific time and price settings as defined in the code.
While the above customization helps you to apply pricing strategies based on selected duration. What if you want to set a fixed rate irrespective of any hour selected by the customer? Don’t worry! We have covered even that. You can try this customization that will set fixed booking cost to 1 hour duration in WooCommerce Booking and Appointment plugin.