사용자 역할 및 카테고리에 따라 WooCommerce 디스플레이 가격 변경 [닫기]


13

사용자 역할 (도매상, 딜러 등)과 카테고리에 따라 다른 가격을 표시하려고합니다.

상품이 장바구니에 추가되었지만 페이지 자체에는 추가되지 않으면 이러한 할인을 표시하는 동적 가격 플러그인이 있습니다.

필터 또는 작업을 사용하여 사용자 수준을 확인하고 항목 범주를 확인한 다음 가격을 동적으로 변경하는 방법이 있습니까?

답변:


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
이 위대한 답변에 감사드립니다. 어떤 이유로 내 변동 가격이이 필터를 사용하여 변경되지 않습니다. 이 문제에 익숙하십니까?
Robbert

단순 제품에서만 작동
Klevis Miho

0

WooCommerce에 대한 고객 별 가격을 시험해 볼 수 있습니다 . 이 플러그인을 사용하면 등록 된 사용자에 대해 다른 가격을 추가 할 수 있습니다.

현재 플러그인은 초기 단계이지만 제품 카테고리에 따른 가격과 같은 추가 기능을 지원하도록 업데이트 될 예정입니다.


이 플러그인은 제품 만 할인 할 수 있습니다. 가격을 올리려면 어떻게해야합니까?
Klevis Miho
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.