Nik*_*ner 5 php wordpress shipping cart woocommerce
基本上我正在尝试使用具有运输类别"Roller"(ID )的购物车物品时flat_rate:7 禁用统一费率方法ID 92.
这是我试过的代码:
add_filter('woocommerce_package_rates', 'wf_hide_shipping_method_based_on_shipping_class', 10, 2);
function wf_hide_shipping_method_based_on_shipping_class($available_shipping_methods, $package)
{
$hide_when_shipping_class_exist = array(
92 => array(
'flat_rate:7'
)
);
$shipping_class_in_cart = array();
foreach(WC()->cart->cart_contents as $key => $values) {
$shipping_class_in_cart[] = $values['data']->get_shipping_class_id();
}
foreach($hide_when_shipping_class_exist as $class_id => $methods) {
if(in_array($class_id, $shipping_class_in_cart)){
foreach($methods as & $current_method) {
unset($available_shipping_methods[$current_method]);
}
}
}
return $available_shipping_methods;
}
Run Code Online (Sandbox Code Playgroud)
发货类ID 92是发货类,我想隐藏flat_rate:7它.
我的网站是这样的:http://www.minimoto.me/ WordPress:4.8.4 WooCommerce:3.1.1
任何帮助将不胜感激.
Loi*_*tec 10
更新:您应该尝试这种更短,更紧凑和有效的方式:
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 class to find
$class = 92;
// HERE define the shipping method to hide
$method_key_id = 'flat_rate:7';
// Checking in cart items
foreach( $package['contents'] as $item ){
// If we find the shipping class
if( $item['data']->get_shipping_class_id() == $class ){
unset($rates[$method_key_id]); // Remove the targeted method
break; // Stop the loop
}
}
return $rates;
}
Run Code Online (Sandbox Code Playgroud)
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中.
经过测试和工作.
有时,您可能需要刷新运输方式,然后禁用/保存并重新启用/保存您的"统一费率"运输方式.
要查找送货方式ID和送货类ID,请参阅下文...
许多不同送货方式的更新(与您的评论相关):
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 class to find
$class = 92;
// HERE define the shipping methods you want to hide
$method_key_ids = array('flat_rate:7', 'local_pickup:3');
// Checking in cart items
foreach( $package['contents'] as $item ) {
// If we find the shipping class
if( $item['data']->get_shipping_class_id() == $class ){
foreach( $method_key_ids as $method_key_id ){
unset($rates[$method_key_id]); // Remove the targeted methods
}
break; // Stop the loop
}
}
return $rates;
}
Run Code Online (Sandbox Code Playgroud)
经过测试和工作......
查找货运类ID.
1)在wp_terms表下的数据库中:
搜索术语名称或术语slug,您将获得术语ID(发货类ID).
2)在Woocommerce运输设置中,使用浏览器html检查工具编辑"统一费率",检查运费类别费率字段,如:
在您的imput name属性中woocommerce_flat_rate_class_cost_64.所以64是发货类的ID.
获取送货方式费率ID:
要获取相关的送货方式费率ID,
flat_rate:12请使用浏览器代码检查器检查每个相关的单选按钮属性,name例如:
| 归档时间: |
|
| 查看次数: |
3932 次 |
| 最近记录: |