在WooCommerce中,我使用 在WooCommerce中隐藏特定运输类别的运输方式 回答代码(第二种方式),但问题是我使用的WPML插件可以管理2种语言的网站,因此只查找一个类是不会做的。
In WooCommerce, I am hiding shipping methods based on different shipping classes in cart using "Hide shipping methods for specific shipping class in WooCommerce" answer code (the 2nd way), but the problem is that I use WPML plugin which manage 2 languages site, so looking for just one class won't do it.
所以我需要处理2个运输类而不是一个。我以这种方式尝试了addind 2航运类别:
So I need to handle 2 shipping classes instead of one. I tried addind 2 shipping classes this way:
// HERE define your shipping classes to find $class = 3031, 3032;但是它破坏了网站。因此,我不仅要隐藏 3031 和 3032两种运输类别的已定义统一费率, code> 。
But it breaks the website. So I would like to hide the defined flat rate not only for both shipping classes 3031 and 3032.
我在做什么错?如何在不破坏网站的情况下启用2个运输类?
What I am doing wrong? How can I enable 2 shipping classes without breaking the web site?
推荐答案要使用多个运输类,应首先在中定义它们一个数组,并在 IF 语句中,您将使用 in_array()条件函数:
To use multiple shipping classes, you should first defined them in an array and in the IF statement you will use in_array() conditional function this way:
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文件中)。经过测试并可以正常工作。
Code goes in functions.php file of your active child theme (or active theme). Tested and works.
有时,您可能需要刷新进入运输区域的运输方法,然后禁用/保存并重新启用/保存您的统一费率送货方式。
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.
相关主题:在WooCommerce中隐藏特定运输类别的运输方法
更多推荐
隐藏WooCommerce中特定运输类别的运输方法
发布评论