0
私はすべての手がかりを探していますが、今まで見つかったことは動作しません。 の商品が配送クラスに含まれている場合は、配送方法を隠したいと思っています。私はカートにクラスがあるかどうかを隠す方法を見つけました。それを調整して私のために働かせることはできません。配送クラス "Cannabis"がカートにない場合、カートがローカル配送を隠すように誰でもこれを変更できますか?配送方法が表示されない場合配送方法を隠す
// Hides other shipping methods if cannabis is in cart
add_filter('woocommerce_package_rates', 'hide_shipping_method_when_shipping_class_product_is_in_cart', 10, 2);
function hide_shipping_method_when_shipping_class_product_is_in_cart($available_shipping_methods, $package)
{
// Shipping class IDs that need the method removed
$shipping_class_ids = array(
31
);
$shipping_services_to_hide = array(
'wf_shipping_usps:D_PRIORITY_MAIL',
'wf_shipping_usps:D_EXPRESS_MAIL',
'wf_shipping_usps:flat_rate_box_priority'
);
$shipping_class_exists = false;
foreach(WC()->cart->cart_contents as $key => $values) {
if (in_array($values['data']->get_shipping_class_id() , $shipping_class_ids)) {
$shipping_class_exists = true;
break;
}
}
if ($shipping_class_exists) {
foreach($shipping_services_to_hide as & $value) {
unset($available_shipping_methods[$value]);
}
}
return $available_shipping_methods;
}