不使用区域或统一费率向Woocommerce运送类别添加费用

时间:2019-02-22 19:25:25

标签: php wordpress woocommerce shipping

我在寻找所需物品时遇到很多麻烦,所以我转向这里的专家!

我正在为我们简单的非营利漫画书店使用Woocommerce和一个名为Table Rate Shipping Plus的插件(按mangohour)。我们在瑞典将基于重量的运输作为标准,因此我们的商店不选择统一费率系统。

我创建了一个“庞大”的运输类别,我需要它在选择该类别的产品时自动向购物车中添加少量费用(仅一次,没有堆叠),而无需使用woocommerce的运输区域和统一费率制度。

我似乎找不到任何可以在任何地方执行此简单操作的东西,而且我对PHP不够精通,无法自己编写函数或用于functions.php的过滤器。

有人可以指出我正确的方向吗?我盯着自己瞎了眼...

1 个答案:

答案 0 :(得分:1)

如果我给您这段代码来放入functions.php中,您知道如何自定义它吗?还是我应该把它变成一个简单的插件?

此处是在我本地WP测试环境中工作的直观视图。

Imgur


安装到functions.php

向下滚动到实际代码的开始位置,然后将整个块复制并粘贴到主题文件夹functions.php的最底部。只需简单的复制和粘贴即可。


使用说明。

步骤1.在WooComerce设置>运送>运送类别中创建运送类别。例如,在测试站点上,我在wooComerce设置中创建了“批量”和“轻型”运输类。记住您为步骤2设置的子弹。

第2步。在EX1,我将WooCommerce装运类的区分大小写的子句放在''中。 在EX2,我将您要在结帐时显示的费用的说明放在“”内。最终,您只需在EX3处放置费用的数字值,该数字值就不会放在“”之内。

//Example:
$shippingClasses['EX1'] = ['description' => 'EX2', 'fee' => EX3];

//How it will look:
$shippingClasses['bulky'] = ['description' => 'Bulky Fee', 'fee' => 7];
$shippingClasses['light'] = ['description' => 'Light Fee', 'fee' => 4];

就这样!那就是您要做的全部。


代码

function fees_fees_fees() {

    $shippingClasses['bulky'] = ['description' => 'Bulky Fee', 'fee' => 5];
    $shippingClasses['light'] = ['description' => 'Light Fee', 'fee' => 7];

    foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
    $shipping_class = get_the_terms( $values['product_id'], 'product_shipping_class' );

        foreach($shippingClasses as $key => $val) {
        if ( isset( $shipping_class[0]->slug ) && in_array( $shipping_class[0]->slug, [$key] ) ) {
              WC()->cart->add_fee( __($val['description'], 'woocommerce'), $val['fee'] ); }
        }
    }
}
add_action( 'woocommerce_cart_calculate_fees', 'fees_fees_fees' );