创建一个简码以显示结帐时显示的 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 统一费率价格的主要内容,如果未能解决你的问题,请参考以下文章

如何创建实际加载广告时显示的不可见按钮[重复]

为 Slick Slider 和 ACF 创建简码

如何更改启动时显示的默认 SKScene

尝试不显示当我单击表单的 EditText 之一时显示的按钮

添加新片段时显示的按钮

如何创建按下 UITableViewRowAction 时显示的编辑模式视图控制器?