WooCommerce에서 수량에 따라 할인을 제공하는 방법

게시 됨: 2020-01-27

일반적으로 상점 소유자는 고객이 특정 제품을 두 개 이상 구매하는 경우 할인을 제공하고자 할 수 있습니다. 이것은 판매를 늘리거나 초과 재고를 마감할 수 있습니다. 이 게시물에서는 코드 조각과 플러그인을 모두 사용하여 WooCommerce에서 수량에 따라 할인을 제공하는 방법을 배웁니다.

코드 조각을 사용하여 WooCommerce에서 수량에 따라 할인을 제공하는 방법

코드 조각을 사용하여 이 작업을 수행하는 방법을 살펴보겠습니다. 이 코드 스니펫을 통해 고객이 동일한 제품을 2개 이상 구매하는 경우 5% 할인을 제공합니다.

이렇게 하려면 하위 테마의 functions.php 파일에 아래 코드를 추가해야 합니다.

 add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );

기능 ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){

    $product_id = $variation_id > 0 ? $variation_id : $product_id;

    ## ----- 여기에서 할인 설정 ----- ##
    $discount_percentage = 5; // 할인(5%)

    // WC_Product 객체
    $product = wc_get_product($product_id);

    $price = (float) $product->get_price();

    // 제품 기본 기본 가격을 사용자 정의 장바구니 항목 데이터로 설정합니다.
    $cart_item_data['base_price'] = $price;

    // 제품 할인 가격을 사용자 정의 장바구니 항목 데이터로 설정
    $cart_item_data['new_price'] = $price * (100 - $discount_percentage) / 100;

    // 사용자 정의 장바구니 항목 데이터로 백분율 설정
    $cart_item_data['percentage'] = $discount_percentage;

    $cart_item_data 반환;
}

// 제품의 원래 가격을 표시합니다.
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );

기능 ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){
    if( isset($cart_item['base_price']) ) {
        $product = $cart_item['데이터'];
        $product_price = wc_price( wc_get_price_to_display( $product, array( 'price' => $cart_item['base_price'] ) ) );
    }
    $product_price 반환;
}

// 할인율과 함께 상품명 표시
add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
기능 ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){
    if( isset($cart_item['백분율']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'] )
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% 할인)</em>';
    }
    $product_name 반환;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 );
기능 ts_custom_discounted_cart_item_price( $cart ) {
    if ( is_admin() && ! 정의된( 'DOING_AJAX' ) )
        반품;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        반품;

    ## ----- 여기에서 수량을 설정하십시오 ----- ##
    $targeted_qty = 2; // 목표 수량

    // 장바구니 항목을 반복합니다.
    foreach ( $cart->get_cart() as $cart_item ) {

        // 아이템 수량이 2개 이상인 경우
        if( $cart_item['수량'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // 장바구니 항목 할인 가격 설정
            $cart_item['data']->set_price($cart_item['new_price']);
        }
    }
}

위의 코드는 제품의 수량이 2를 초과하면 5%의 할인을 추가합니다. 원하는 할인을 설정하기 위해 $discount_percentage 변수를 변경하고 그 이상으로 설정하기 위해 $targeted_qty 를 변경하여 요구 사항에 맞게 변경할 수 있습니다. 할인을 적용하고 싶습니다.

offer discounts based on quantity in WooCommerce - Updated Cart contents

장바구니에 같은 상품을 2개 이상 추가하시면 할인된 가격으로 보실 수 있습니다.

위의 코드에서 네 가지 주요 후크를 사용했습니다.

woocommerce_add_cart_item_data : 이 필터 후크는 장바구니의 내용/메타 데이터를 변경하는 데 사용됩니다.
woocommerce_cart_item_price : 이 필터 후크는 장바구니에 가격이 표시되는 방식을 변경하는 데 사용됩니다.
woocommerce_cart_item_name : 이 필터 후크를 사용하여 장바구니의 제품 이름을 변경할 수 있습니다. 이 예에서는 제품 이름에 할인 비율을 추가하는 데 사용합니다.
woocommerce_before_calculate_totals : 이 작업 후크는 장바구니의 제품 가격을 재정의하는 데 사용됩니다.

판매하지 않는 품목에 대해서만 수량에 따라 할인을 제공하는 방법:

이를 판매 중이 아닌 제품으로만 제한하려면 위의 코드 스니펫을 편집하여 woocommerce_add_cart_item_data 후크에 추가되는 함수 내부에 조건을 추가하기만 하면 됩니다.

 add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );
기능 ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){
    $product_id = $variation_id > 0 ? $variation_id : $product_id;

    ## ----- 여기에서 할인 설정 ----- ##
    $discount_percentage = 5; // 할인(5%)

    // WC_Product 객체
    $product = wc_get_product($product_id);

    // 비 판매 제품에 대해서만 할인을 제공하려면 여기에 조건을 추가하십시오.
    if( ! $product->is_on_sale() ){
        $price = (float) $product->get_price();

        // 제품 기본 기본 가격을 사용자 정의 장바구니 항목 데이터로 설정합니다.
        $cart_item_data['base_price'] = $price;

        // 제품 할인 가격을 사용자 정의 장바구니 항목 데이터로 설정
        $cart_item_data['new_price'] = $price * (100 - $discount_percentage) / 100;

        // 사용자 정의 장바구니 항목 데이터로 백분율 설정
        $cart_item_data['percentage'] = $discount_percentage;
    }

    $cart_item_data 반환;
}

// 제품의 원래 가격을 표시합니다.
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );
기능 ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){
    if( isset($cart_item['base_price']) ) {
        $product = $cart_item['데이터'];
        $product_price = wc_price( wc_get_price_to_display( $product, array( 'price' => $cart_item['base_price'] ) ) );
    }
    $product_price 반환;
}

// 할인율과 함께 상품명 표시
add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
기능 ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){
    if( isset($cart_item['백분율']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'] )
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% 할인)</em>';
    }
    $product_name 반환;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 );
기능 ts_custom_discounted_cart_item_price( $cart ) {
    if ( is_admin() && ! 정의된( 'DOING_AJAX' ) )
        반품;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        반품;

    ## ----- 여기에서 수량을 설정하십시오 ----- ##
    $targeted_qty = 2; // 목표 수량

    // 장바구니 항목을 반복합니다.
    foreach ( $cart->get_cart() as $cart_item ) {

        // 아이템 수량이 2개 이상인 경우
        if( $cart_item['수량'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // 장바구니 항목 할인 가격 설정
            $cart_item['data']->set_price($cart_item['new_price']);
        }
    }
} 

이러한 방식으로, 필터 후크 woocommerce_add_cart_item_data 에 추가된 함수 내부에 적절한 조건을 명시하여 비세일, 세일 또는 모든 제품(예: 매장 전체)에 대한 코드 스니펫을 사용하여 수량에 따라 할인을 제공할 수 있습니다.

플러그인을 사용하여 WooCommerce에서 수량에 따라 할인을 제공하는 방법

웹사이트 파일에 코드 스니펫을 추가하는 것이 불편하다면 플러그인을 사용하여 추가할 수도 있습니다.

  1. WooCommerce 할인 규칙 : 제품 수량뿐만 아니라 고객이 특정 가격 제한을 초과하는 경우에도 백분율 할인을 추가할 수 있는 무료 플러그인입니다. 특정 수의 품목에 대해 백분율 할인을 추가할 수도 있습니다(반드시 동일한 제품일 필요는 없음). 이 플러그인의 PRO 버전을 사용하면 카테고리 전체 할인, BOGO(1개 구매 1개 무료) 거래, 백분율 할인 대신 고정 가격 할인 등을 추가할 수 있습니다.
  2. WooCommerce를 위한 조건부 할인: 무료 버전에서 거의 모든 중요한 기능을 제공하는 또 다른 플러그인입니다. 수량, 장바구니 항목 수, 특정 카테고리, 특정 제품, 가변 기능(파란색 셔츠, 중간 크기)에 따라 할인을 추가할 수 있습니다. 등), 특정 상점 역할 또는 특정 고객의 경우. PRO 버전에는 몇 가지 추가 기능이 있습니다. 그 중 하나는 특정 제품을 구매할 때 장바구니에 무료로 제품을 추가하는 것입니다.
  3. 스마트 쿠폰: 기프트 카드, 스토어 크레딧, URL 쿠폰 및 고급 제한 외에도 장바구니의 특정 제품 수(예: 셔츠 10개) 및 여러 제품의 총 제품 수량에 따라 쿠폰을 제한할 수도 있습니다. 카트(예: 셔츠 5개 + 바지 2개 + 벨트 3개).

이러한 방식으로 코드 조각이나 플러그인을 사용하여 제품 수량에 따라 고객에게 할인을 제공할 수 있습니다.