在 WooCommerce 中隐藏特定运输 类 的运输方式

Hide shipping methods for specific shipping classes in WooCommerce

在 WooCommerce 中,我使用 "" 答案代码 隐藏基于购物车中不同运输方式 classes 的运输方式(第二种方式),但问题是我使用管理 2 种语言网站的 WPML 插件,所以只寻找一个 class 是不行的。

所以我需要处理 2 次运输 classes 而不是一次。我尝试通过这种方式添加 2 运送 classes:

// HERE define your shipping classes to find
$class = 3031, 3032;

但是它破坏了网站。所以我想隐藏定义的统一费率,不仅是为了运输 classes 30313032.

我做错了什么?如何在不破坏网站的情况下启用 2 个运送 classes?

要使用多次运输 类,您应该首先在一个数组中定义它们,然后在 IF 语句中您将使用 in_array()这样的条件函数:

add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class', 10, 2 );
function hide_shipping_method_based_on_shipping_class( $rates, $package )
{
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // HERE define your shipping classes to find
    $classes = [3031, 3032];

    // HERE define the shipping methods you want to hide
    $method_key_ids = array('flat_rate:189');

    // Checking in cart items
    foreach( $package['contents'] as $item ) {
        // If we find one of the shipping classes
        if( in_array( $item['data']->get_shipping_class_id(), $classes ) ){
            foreach( $method_key_ids as $method_key_id ){
                unset($rates[$method_key_id]); // Remove the targeted methods
            }
            break; // Stop the loop
        }
    }
    return $rates;
}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。

Sometimes, you should may be need to refresh shipping methods going to shipping areas, then disable / save and re-enable / save your "flat rates" shipping methods.

相关主题: