隐藏WooCommerce中特定运输类别的运输方法

时间:2019-06-01 12:48:26

标签: php wordpress woocommerce cart shipping-method

在WooCommerce中,我使用Hide shipping methods for specific shipping class in WooCommerce应答代码(第二种方法)在购物车中隐藏基于不同运输类别的运输方法,但是问题是我使用的WPML插件可以管理2种语言的网站,因此仅查找一个类就不会这样做。

所以我需要处理2个运输类而不是一个。我用这种方式尝试了addind 2运送类:

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

但是它破坏了网站。因此,我不仅要针对 3031 3032 这两种运输类别隐藏定义的统一费率。

我做错了什么?如何在不破坏网站的情况下启用两种运输类别?

1 个答案:

答案 0 :(得分:1)

要使用多个运输类,应首先在数组中定义它们,然后在 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文件中。经过测试,可以正常工作。

  

有时候,您可能需要刷新前往送货地区的送货方式,然后禁用/保存并重新启用/保存您的“固定费率”送货方式。

相关主题:Hide shipping methods for specific shipping class in WooCommerce