我们有一个电子商务网站,其中包含两类产品,这些产品根据每个用户的自定义字段中设置的值接收可变折扣。一种产品(以下示例中的衬衫)具有一种(或多种)同步力销售另一种类型的产品(示例中的鞋)。
我们需要提供每个类别不同的用户折扣。除了我们将产品添加到购物车之外,我们想要显示用户的自定义折扣价格,这样可以正常工作。
当发生这种情况时,一个折扣级别就会接管。
示例:
add_filter('woocommerce_get_price', 'custom_price_WPA111772', 40, 2);
//add_filter( 'woocommerce_get_item_data', 'custom_price_WPA111772', 99, 2);
/**
* custom_price_WPA111772
*
* filter the price based on category and user role
* @param $price
* @param $product
* @return
*/
function custom_price_WPA111772($price, $product) {
if (!is_user_logged_in()) return $price;
//check if the product is in a category you want, let say shirts
if( has_term( array('Shirt'), 'product_cat' ,$product->ID) ) {
$shirt_level = get_field('shirt_level', 'user_'.get_current_user_id());
if($shirt_level != 0 || $shirt_level != null)
{
$price = $price * (1 - ($shirt_level/100));
}else{
$price = $price;
}
}else{
$shoe_level = get_field('shoe_level', 'user_'.get_current_user_id());
if($shoe_level != 0 || $shoe_level != null)
{
$price = $price * (1 - $shoe_level/100);
}else{
$price = $price;
}
}
return $price;
我们正在使用此代码来完成此任务:
AtomicInteger
当我们使用上面的这个例子时,同步的鞋子正确销售产品的折扣率为66%。但这件衬衫也打折了66%,而不是应该有的44%折扣。
此代码适用于网站,但仅在产品实际位于购物车中时才会失败。
此时,一个类别折扣将应用于所有产品。
我们所能想到的是,强制同步以某种方式连接这两个类别 有没有人有他们能提供的任何见解?