为Woocommerce中的特定用户角色应用折扣

时间:2019-02-26 15:39:38

标签: php woocommerce cart user-roles discount

我有一个拥有3个用户角色的woocommerce商店,我只想为用户角色“ company”提供购物车总额的10%折扣。

我找到了Percentage discount based on user role and payment method in Woocommerce答案,该答案非常符合我的需求,但不知道如何修改代码以满足我的需求,因为它还包含一个条件基于付款方式并仅在结帐时显示折扣,但我也需要将其显示在购物车中。

1 个答案:

答案 0 :(得分:2)

以下代码将为“公司​​”用户角色(购物车和结帐时)提供10%的折扣:

// Applying conditionally a discount for a specific user role
add_action( 'woocommerce_cart_calculate_fees', 'discount_based_on_user_role', 20, 1 );
function discount_based_on_user_role( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return; // Exit

    // Only for 'company' user role
    if ( ! current_user_can('company') )
        return; // Exit

    // HERE define the percentage discount
    $percentage = 10;

    $discount = $cart->get_subtotal() * $percentage / 100;
    // Applying discount
    $cart->add_fee( sprintf( __("Discount (%s)", "woocommerce"), $percentage . '%'), -$discount, true );
}

代码在您的活动子主题(或活动主题)的 function.php 文件上。应该可以。