在 WooCommerce 购物车中隐藏基于运费 class 的 COD 付款方式
Hide COD payment method based on shipping class in WooCommerce cart
作为 Salam o Alikum,如果购物车中的产品属于 NOCOD 运输方式,我将尝试隐藏货到付款付款方式 class。我创建了一个运输 class,它的 ID 是 723,我试图从网络上的任何地方获得帮助,但无法弄清楚我哪里做错了。
基于网上冲浪,自己写了代码加入到主题中functions.php。
这是代码片段。
//disabling COD if shipping class is NOCOD.
add_filter('woocommerce_available_payment_gateways', 'hide_cod_if_shipping_class_is_nocod', 10, 2);
//fuction
function hide_cod_if_shipping_class_is_nocod( $available_gateways ) {
$shipping_class_target_id = 723; // shipping class ID
$in_cart = false;
// Not in backend (admin)
if( is_admin() ) {
return $available_gateways;
}
else{
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target_id ) {
$in_cart = true;
break;
}
}
}
// Remove Cash on delivery (cod) payment gateway for products belongs to NOCOD shipping class
if($in_cart){
unset($available_gateways['cod']);
}
// unset 'cod'
return $available_gateways;
}
但它不起作用,也没有在结帐页面上隐藏货到付款。任何帮助、建议或提示将不胜感激,谢谢。 :)
add_filter( 'woocommerce_available_payment_gateways', 'hide_cod_if_shipping_class_is_nocod', 10, 2 );
function hide_cod_if_shipping_class_is_nocod( $available_gateways ) {
$shipping_class_target_id = 21; // shipping class ID
$in_cart = false;
// Not in backend (admin)
if ( is_admin() ) {
return $available_gateways;
} else {
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target_id ) {
unset( $available_gateways[ 'cod' ] );
break;
}
}
}
return $available_gateways;
}
运输测试正常class
作为 Salam o Alikum,如果购物车中的产品属于 NOCOD 运输方式,我将尝试隐藏货到付款付款方式 class。我创建了一个运输 class,它的 ID 是 723,我试图从网络上的任何地方获得帮助,但无法弄清楚我哪里做错了。
基于网上冲浪,自己写了代码加入到主题中functions.php。
这是代码片段。
//disabling COD if shipping class is NOCOD.
add_filter('woocommerce_available_payment_gateways', 'hide_cod_if_shipping_class_is_nocod', 10, 2);
//fuction
function hide_cod_if_shipping_class_is_nocod( $available_gateways ) {
$shipping_class_target_id = 723; // shipping class ID
$in_cart = false;
// Not in backend (admin)
if( is_admin() ) {
return $available_gateways;
}
else{
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target_id ) {
$in_cart = true;
break;
}
}
}
// Remove Cash on delivery (cod) payment gateway for products belongs to NOCOD shipping class
if($in_cart){
unset($available_gateways['cod']);
}
// unset 'cod'
return $available_gateways;
}
但它不起作用,也没有在结帐页面上隐藏货到付款。任何帮助、建议或提示将不胜感激,谢谢。 :)
add_filter( 'woocommerce_available_payment_gateways', 'hide_cod_if_shipping_class_is_nocod', 10, 2 );
function hide_cod_if_shipping_class_is_nocod( $available_gateways ) {
$shipping_class_target_id = 21; // shipping class ID
$in_cart = false;
// Not in backend (admin)
if ( is_admin() ) {
return $available_gateways;
} else {
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target_id ) {
unset( $available_gateways[ 'cod' ] );
break;
}
}
}
return $available_gateways;
}
运输测试正常class