创建一个简码以显示结帐时显示的 Woocommerce 统一费率价格
Posted
技术标签:
【中文标题】创建一个简码以显示结帐时显示的 Woocommerce 统一费率价格【英文标题】:Create a shortcode to display the Woocommerce flat rate price as displayed on the checkout 【发布时间】:2021-12-22 06:37:56 【问题描述】:我想创建一个插件来向我的 woocommerce 商店添加 2 个简码,这样我就可以将运费作为简码添加到文本中,如下例所示:
我们到阿姆斯特丹的运费为 [shipping_cost_1] 欧元
所以前端的文本会是这样的:我们到阿姆斯特丹的运费是 6.95 欧元
这些是我想使用的费率和简码:
[shipping_cost_1] = 统一费率 woocommerce 运费,包括运输区 1 的增值税(在阿姆斯特丹内运输) [shipping_cost_2] = 统一费率 woocommerce 运费,包括运输区 2 的增值税(阿姆斯特丹以外的运输)
作为参考,阿姆斯特丹的运费显示在结帐页面上:
我想在以下结构中添加代码:
//简码函数
函数 shipping_cost_display_1()
// 从 woocommerce 获取运费
???
// 广告代码返回
???
//注册简码
add_shortcode('shipping_cost_1', 'shipping_cost_display_1');
【问题讨论】:
【参考方案1】:只是想知道您是否已经查看过这篇文章:WooCommerce: Show Shipping Rates @ Single Product Page?
基本上你可以通过一个简单的命令来获取运输区域:
WC_Shipping_Zones::get_zones();
获得它们后,您可以遍历数组并在 ($instance['cost']) 中查找费率。
以下内容应该可以为您解决问题 - 当然将“amsterdam”更改为您想要的区域名称:
function shipping_cost_display_1()
$zones = WC_Shipping_Zones::get_zones();
foreach ( $zones as $zone_id => $zone )
if ( "amsterdam" !== $zone['zone_name'] ) continue;
$zone_shipping_methods = $zone['shipping_methods'];
foreach ( $zone_shipping_methods as $index => $method )
$instance = $method->instance_settings;
return $instance['cost'];
add_shortcode( 'shipping_cost_1', 'shipping_cost_display_1' );
还有一种说法是,通过使用一个短代码参数,可以使用相同的短代码返回两个费率。
【讨论】:
以上是关于创建一个简码以显示结帐时显示的 Woocommerce 统一费率价格的主要内容,如果未能解决你的问题,请参考以下文章