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

时间:2013-08-27 作者:Tricky Buddha

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

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

是否有方法使用筛选器或操作来检查用户级别、检查项目的类别,然后动态更改价格?

2 个回复
SO网友:Bainternet

是的,您可以使用woocommerce_get_price filter hook可根据用户角色筛选值并相应返回价格,例如:

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 );
}

SO网友:Domain

你可以试试Customer Specific Pricing for WooCommerce. 使用此插件,您可以为注册用户添加不同的价格。

目前该插件处于初始阶段,但很快就会有更新,以支持其他功能,如基于产品类别的价格。

结束

相关推荐

Option_active_plugins筛选器不起作用

我为option\\u active\\u插件添加了一个过滤器,以防止大多数插件加载到管理页面上。确认位于正确的页面上,并返回经过适当修改的数组,但这对页面上包含的插件没有影响。尝试使用高数字作为筛选器优先级。无影响。有什么想法吗?