Php 向代码段添加附加检查
下面是我的代码,它可以工作,但还没有完全完成。目前,它只是检查购物车中添加的产品是否具有Php 向代码段添加附加检查,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,下面是我的代码,它可以工作,但还没有完全完成。目前,它只是检查购物车中添加的产品是否具有techshipping类别,然后应用静态5美元折扣。然而,我想要达到的是增加一个额外的要求。 我网站上的大多数产品都没有设置发货类别,其余的都设置了“技术发货类别”。我想做以下工作: 只有当客户添加一个或多个(无所谓)没有指定装运类别的产品时,才应给予5美元的折扣。如果购物车中只有tech shipping class项目,则不应提供折扣。如果产品没有设定类别和tech shipping class,无论商
tech
shipping类别,然后应用静态5美元折扣。然而,我想要达到的是增加一个额外的要求。
我网站上的大多数产品都没有设置发货类别,其余的都设置了“技术发货类别”。我想做以下工作:
只有当客户添加一个或多个(无所谓)没有指定装运类别的产品时,才应给予5美元的折扣。如果购物车中只有tech shipping class
项目,则不应提供折扣。如果产品没有设定类别和tech shipping class
,无论商品数量如何,都可以享受5美元的静态折扣
我似乎不清楚如何检查购物车是否有其他物品,更具体地说,是带有未设置类别的物品
+技术装运类别
,然后应用该折扣。。
非常感谢您的帮助。谢谢
add_filter( 'woocommerce_package_rates', 'adjustment_in_rates_of_product_with_shipping_class', 12, 2 );
function adjustment_in_rates_of_product_with_shipping_class( $available_shipping_methods, $package ) {
// Shipping class slug to be eligible for a discount
$shipping_class = array(
'tech',
);
// Discount
$discount = 5;
// Enter the Shipping Method Value
$shipping_services = array(
'flat_rate:2',
);
$shipping_class_exists = false;
foreach(WC()->cart->get_cart_contents() as $key => $values) {
if ( in_array($values['data']->get_shipping_class() , $shipping_class) ) {
$shipping_class_exists = true;
break;
}
}
if ($shipping_class_exists) {
foreach ($available_shipping_methods as $key => $value) {
if ( in_array($value->get_id() , $shipping_services) ) {
$available_shipping_methods[$key]->cost -= $discount;
}
}
}
return $available_shipping_methods;
}
替换这个
if ( in_array($values['data']->get_shipping_class() , $shipping_class) )
为了
我认为,通过此修改,您的代码将检查购物车中是否至少有一种产品没有装运类别,并且在这种情况下应用折扣。没错,但它不会检查购物车中是否至少有一种产品没有配送类别,另一种产品具有指定的配送类别
tech
。如果购物车中有一种产品具有tech配送类别,而另一种产品没有配送类别,该怎么办?我这样问是因为从我对你的问题的理解来看,只要有没有交货类别的产品,折扣就必须适用。另一方面,如果购物车只有shipping类别的产品,则不应应用折扣,并且根据我建议的修改,将发生这种行为。
if ( $values['data']->get_shipping_class() == '' )