在不使用区域或统一费率的情况下向Woocommerce Shipping Class添加费用

问题描述 投票:2回答:1

我在找到我需要的东西时遇到了很多麻烦,所以我转向这里的大师!

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

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

我似乎无法在任何地方找到任何做这个简单行为的东西,而且我不够精通php,能够自己为functions.php编写函数或过滤器。

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

php wordpress woocommerce shipping
1个回答
1
投票

如果我给你这个代码放在functions.php中,你会明白如何自定义它吗?或者我应该把它变成一个简单的插件给你?

这是在我的本地WP测试环境中工作的视觉效果。


安装到functions.php

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


使用说明。

步骤1.在WooComerce设置>装运>装运等级中创建装运班。例如,在我的测试网站上,我在wooComerce设置中创建了“笨重”和“轻量”的运输类。记住你为第2步设置的slu ..

第2步。在EX1,我将WooCommerce运输类的区分大小写的句子放在''中。在EX2,我会在结帐时将您想要显示的费用的说明放在''内。在EX3的Finnaly你只需要为费用设置数值,这不会在''内。

//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' );
© www.soinside.com 2019 - 2024. All rights reserved.