Получите данные о ценах на заказываемый продукт с диапазонами дат в WooCommerce

Я хотел бы показать клиентам цену в соответствии с диапазоном дат.

В одном из моих заказываемых продуктов с ценой даты ярости у меня есть:

  • базовая цена: 100 $ за первый день,
  • добавляет 60 долларов к базовой цене за два дня (в диапазоне дат),
  • добавляет 90 $ к базовой цене за три дня (в диапазоне дат).

И так далее…

Это делается в бэкэнде страницы настроек редактирования бронируемого продукта woocommerce.

Моя проблема в том, что я не могу найти эти дополнения (60, 90) в базе данных. С:

$product    = wc_get_product( $product_id );
$price      = $product->get_price();

Возвращается только базовая цена (100 $).

Приветствуется любая помощь в поиске этих настроек диапазона дат где-нибудь в базе данных или в тех случаях, когда woocommerce рассчитывает это по умолчанию.

Настройки диапазона дат для Woocommerce Bookable Product

1

Решение

Для бронирования WooCommerce у вас есть все необходимое в WC_Product_Booking объект:

// 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>';

Теперь в базе данных вы можете найти эти данные в wp_post_meta стол под _wc_booking_pricing meta_key… Таким образом, из идентификатора продукта вы можете получить к нему доступ также:

$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>';
1

Другие решения

Мое окончательное решение выглядит так:

        $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'];
}
}
}
}
0

По вопросам рекламы [email protected]