基于产品类别和登录用户的WooCommerce变量折扣

时间:2016-06-30 00:53:08

标签: php wordpress woocommerce categories custom-fields

我们有一个电子商务网站,其中包含两类产品,这些产品根据每个用户的自定义字段中设置的值接收可变折扣。一种产品(以下示例中的衬衫)具有一种(或多种)同步力销售另一种类型的产品(示例中的鞋)。

我们需要提供每个类别不同的​​用户折扣。除了我们将产品添加到购物车之外,我们想要显示用户的自定义折扣价格,这样可以正常工作。

当发生这种情况时,一个折扣级别就会接管。

示例:

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%折扣。

此代码适用于网站,但仅在产品实际位于购物车中时才会失败
此时,一个类别折扣应用于所有产品

我们所能想到的是,强制同步以某种方式连接这两个类别 有没有人有他们能提供的任何见解?

0 个答案:

没有答案