Woocommerce - 在产品页面上获取运费
Woocommerce - Get shipping costs on the product page
我正在使用 Wordpress 3.9.14。
我使用 flat_rate
方法支付运费。
它包含一个默认值 cost_per_order
,我在 flat_rate
中使用 2 shipping_classes
作为某些产品的额外费用。
我想在产品页面上显示运费。
现在我使用 $product->shipping_class_id()
来获取 ID,但我不知道如何获取此 shipping_class_id.
的费用
因为如果我知道成本,我可以将其添加到 cost_per_order
以计算产品的总运费。
我也不知道如何获得 cost_per_order
值。
如果根本没有解决方案,我可以使用 switch/case
语句作为紧急解决方案并将成本放在那里但是当我更改 flat_rate
时我需要更改代码成本,所以我不喜欢这种解决方案。
我想通了:
$shipping_class_id = $product->get_shipping_class_id();
$shipping_class= $product->get_shipping_class();
$fee = 0;
if ($shipping_class_id) {
$flat_rates = get_option("woocommerce_flat_rates");
$fee = $flat_rates[$shipping_class]['cost'];
}
$flat_rate_settings = get_option("woocommerce_flat_rate_settings");
echo 'Shipping cost: ' . ($flat_rate_settings['cost_per_order'] + $fee);
我在 woocommerce/checkout/review-order.php 中完成了我的需要。
所以我认为你可以在任何地方使用它...
$product = wc_get_product($cart_item['product_id']);
// just to know what we have
$shipping_class_id = $product->get_shipping_class_id();
$shipping_class = $product->get_shipping_class();
// name of shipping class if you need
$shipping_class_term = get_term( $shipping_class_id, 'product_shipping_class' );
echo $shipping_class_term->name;
// and here IF we know $instance_id (is shipping method id in shipping zone admin page)
$instance_id = 12; // who knows how to get it with code - welcome
$flat_rate = new WC_Shipping_Flat_Rate($instance_id);
$symbol = get_woocommerce_currency_symbol();
echo $symbol.$flat_rate->instance_settings['class_cost_'.$shipping_class_id]);
希望这对某人有所帮助。或者有更好的方法?
我正在使用 Wordpress 3.9.14。
我使用 flat_rate
方法支付运费。
它包含一个默认值 cost_per_order
,我在 flat_rate
中使用 2 shipping_classes
作为某些产品的额外费用。
我想在产品页面上显示运费。
现在我使用 $product->shipping_class_id()
来获取 ID,但我不知道如何获取此 shipping_class_id.
的费用
因为如果我知道成本,我可以将其添加到 cost_per_order
以计算产品的总运费。
我也不知道如何获得 cost_per_order
值。
如果根本没有解决方案,我可以使用 switch/case
语句作为紧急解决方案并将成本放在那里但是当我更改 flat_rate
时我需要更改代码成本,所以我不喜欢这种解决方案。
我想通了:
$shipping_class_id = $product->get_shipping_class_id();
$shipping_class= $product->get_shipping_class();
$fee = 0;
if ($shipping_class_id) {
$flat_rates = get_option("woocommerce_flat_rates");
$fee = $flat_rates[$shipping_class]['cost'];
}
$flat_rate_settings = get_option("woocommerce_flat_rate_settings");
echo 'Shipping cost: ' . ($flat_rate_settings['cost_per_order'] + $fee);
我在 woocommerce/checkout/review-order.php 中完成了我的需要。 所以我认为你可以在任何地方使用它...
$product = wc_get_product($cart_item['product_id']);
// just to know what we have
$shipping_class_id = $product->get_shipping_class_id();
$shipping_class = $product->get_shipping_class();
// name of shipping class if you need
$shipping_class_term = get_term( $shipping_class_id, 'product_shipping_class' );
echo $shipping_class_term->name;
// and here IF we know $instance_id (is shipping method id in shipping zone admin page)
$instance_id = 12; // who knows how to get it with code - welcome
$flat_rate = new WC_Shipping_Flat_Rate($instance_id);
$symbol = get_woocommerce_currency_symbol();
echo $symbol.$flat_rate->instance_settings['class_cost_'.$shipping_class_id]);
希望这对某人有所帮助。或者有更好的方法?