I would like to show to customers the price according to a date range.
In on of my bookable product with date rage pricing I have:
- the base price: 100$ for the first day,
- adds $60 to the base price for two days (in a date range),
- adds 90$ to the base price for three days (in a date range).
And so on…
This is done in the backend of the woocommerce bookable product edit settings page.
My problem is now, that I cannot find those additions (60, 90) anywhere in the database. With:
$product = wc_get_product( $product_id );
$price = $product->get_price();
It only return the base price (100$).
Any help in finding those date range settings somewhere in the database or where woocommerce would calculate this per default is appreciated.
![](https://www.manongdao.com/static/images/pcload.jpg)
For WooCommerce Bookings you have everything needed in the WC_Product_Booking
object:
// Get an instance of the WC_Product object (Here a WC_Product_Booking object)
$product = wc_get_product( $product_id );
// Get the base price
$base_price = $product->get_price();
// Get all related protected data in an array
$product_data = $product->get_data();
// Get the additional pricing data for this bookable product (array)
$product_pricing = $product_data['pricing'];
// iterating through each pricing row
foreach($product_pricing as $key => $princing ){
$pricing_type = $princing['type'];
$pricing_base_cost = $princing['base_cost']; // <= this is the price you are looking for
$pricing_base_modifier = $princing['base_modifier'];
$pricing_cost = $princing['cost'];
$pricing_modifier = $princing['modifier'];
$pricing_from = $princing['from'];
$pricing_to = $princing['to'];
}
// Raw pricing data output (for tests)
echo '<pre>'; print_r($product_pricing); echo '</pre>';
Now in the database you can find this data in wp_post_meta
table under _wc_booking_pricing
meta_key
… So from the product ID you can access it too with:
$pricing_data = get_post_meta( $product_id, '_wc_booking_pricing', false);
// Raw pricing data output (for tests)
echo '<pre>'; print_r($product_pricing); echo '</pre>';
My final solution looks like this:
$product_pricing = get_post_meta( $product_id, '_wc_booking_pricing', false);
foreach ($product_pricing as $pricing) {
if (is_array($pricing)){
foreach ($pricing as $price) {
$cost += $price['base_cost'];
}
}
}
}