【发布时间】:2017-02-12 02:21:30
【问题描述】:
我正在尝试为 wooforce 的 WooCommerce 运输插件创建自定义功能。有两个插件,ups和usps。
我想要实现的是,如果客户从类别 X 或其任何子类别中添加产品,则除 ups ground 之外的所有费率都未设置。
如果购物车中没有这些产品,所有选项仍然可用。
开发人员向我指出了这段代码,但我对 PHP 和 WordPress/WooCommerce 结构化的 PHP 还是很陌生,所以我对如何继续有点困惑。
这是他们给我的代码。
add_filter('woocommerce_package_rates', 'hide_shipping_method_when_shipping_class_product_is_not_in_cart', 10, 2);
function hide_shipping_method_when_shipping_class_product_is_not_in_cart($available_shipping_methods, $package)
{
// Shipping class IDs that need the method removed
$shipping_class_ids = array(
27,
);
$shipping_services_to_hide = array(
'wf_fedex_woocommerce_shipping:FEDEX_GROUND',
'wf_fedex_woocommerce_shipping:FEDEX_2_DAY_AM'
);
$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;
}
【问题讨论】:
标签: wordpress plugins woocommerce