問題描述

我希望根據使用者角色 (批發商,經銷商等) 和根據該類別顯示不同的價格。

有一個動態定價外掛,一旦專案被新增到購物車,而不是頁面本身,顯示這些折扣。

有沒有辦法使用過濾器或動作檢查使用者級別,檢查專案的類別,然後動態更改價格?

最佳解決方案

是的,您可以使用 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 );
}

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。