根据用户角色和类别更改WooCommerce显示价格[关闭]


13

我希望根据用户角色(批发商,经销商等)和类别显示不同的价格。

有一个动态的定价插件,可以在将商品添加到购物车后显示这些折扣,但不在页面本身上。

是否可以使用过滤器或操作检查用户级别,检查商品的类别然后动态更改价格?

Answers:


18

是的,您可以使用woocommerce_get_price过滤器挂钩根据用户角色过滤值并相应地返回价格,例如:

add_filter('woocommerce_get_price', 'custom_price_WPA111772', 10, 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( 'shirts', 'product_cat' ,$product->ID) ) {
        //check if the user has a role of dealer using a helper function, see bellow
        if (has_role_WPA111772('dealer')){
            //give user 10% of
            $price = $price * 0.9;
        }
    }
    return $price;
}

/**
 * has_role_WPA111772 
 *
 * function to check if a user has a specific role
 * 
 * @param  string  $role    role to check against 
 * @param  int  $user_id    user id
 * @return boolean
 */
function has_role_WPA111772($role = '',$user_id = null){
    if ( is_numeric( $user_id ) )
        $user = get_user_by( 'id',$user_id );
    else
        $user = wp_get_current_user();

    if ( empty( $user ) )
        return false;

    return in_array( $role, (array) $user->roles );
}

我试过了 在functions.php中添加了此代码。不起作用

1
感谢您的精彩回答。由于某些原因,使用此过滤器后我的变化价格不会改变。您熟悉这个问题吗?
罗伯特

仅适用于简单产品
Klevis Miho,

0

您可以试用WooCommerce的客户特定定价。使用此插件,您可以为注册用户添加不同的价格。

目前,该插件尚处于初始阶段,但不久将有更新,以支持其他功能,例如基于产品类别的价格。


此插件只能打折产品。如果您想提价怎么办?
Klevis Miho '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.