2017-11-26 4 views
1

日付範囲に応じた価格を顧客に提示したいのですが、WooCommerceの日付範囲を持つ予約可能商品の価格設定データを取得

私が持っている日付の怒りの価格設定と私の予約可能な製品の上で:基本価格

  • :100 $初日のため、
  • 2日間基本価格に$ 60追加されます(日付で)、
  • は、3日間(日付範囲内)に基本料金に90ドルを加算します。

のように...

これはwoocommerce予約可能な製品の編集設定ページのバックエンドで行われます。

私の問題は今、私がそれらの追加(60、90)をデータベースのどこにも見つけることができないことです。 :

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

これは基本料金(100 $)のみを返します。

データベース内のどこかに日付範囲設定を見つける際の助けとなります。または、woocommerceがこれをデフォルトで計算するような場合には、喜ばしく思います。 WooCommerce予約のため

Woocommerce Bookable Product Date Range Settings

答えて

1

あなたはWC_Product_Bookingオブジェクトに必要なすべてのものがあります:あなたはとてもプロダクトIDから...あなたは_wc_booking_pricingmeta_keywp_post_metaの表に、このデータを見つけることができ、データベースに今

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

をそれにもアクセスできます:

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

ありがとう、これはトリックを行います! – achiever

0

私の最終的な解決策は次のようになります:

 $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']; 
        } 
       } 
      } 
     } 
関連する問題