[워드프레스] 우커머스 옵션 상품 페이지에 하나의 가격만 표시하는 방법

워드프레스 우커머스 쇼핑몰에서 옵션 상품을 구성하면 상품 가격이 최저가와 최고가 사이의 범위로 표시됩니다. 상품 페이지에 하나의 가격만 표시하고 싶은 경우 아래의 방법을 이용할 수 있습니다.

아래의 코드가 잘 작동할 것으로 보이지만 이 글이 작성한 지 오래되어 최신 WooCommerce 버전에서 작동하지 않을 수도 있습니다. 다음 글에서 최신 버전에서 작동하는 코드를 확인할 수 있습니다.

우커머스 옵션 상품 페이지에 하나의 가격만 표시하는 방법

우커머스에서 옵션 상품을 구성하는 경우 상품 가격이 다음 그림과 같이 가격 범위(예: 900,000원~1,000,000원)로 표시됩니다.

Variable Price range

하지만 하나의 가격만 표시되도록 하고 싶은 경우가 있을 수 있습니다. 이런 경우 다음 코드를 사용하도록 합니다.

// WC 2.0 옵션 가격 포맷 사용. 할인가가 최소값으로 표시됨
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( '할인가: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( '할인가: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
// Source: stackoverflow

위의 코드를 사용 중인 워드프레스 테마의 함수 파일(functions.php)에 추가하도록 합니다. 그러면 다음 그림과 같이 가격이 표시됩니다. (위의 코드를 테마 함수 파일에 추가하는 방법은 이 글을 참고하세요.)

Variable Price - only one

옵션 가격 범위를 완전히 없애려면 다음 코드를 사용할 수 있습니다.

add_filter( 'woocommerce_variable_sale_price_html', 'bbloomer_remove_variation_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'bbloomer_remove_variation_price', 10, 2 );

function bbloomer_remove_variation_price( $price ) {
$price = '';
return $price;
}
// Source: businessbloomer.com

그러면 모든 곳에서 옵션 상품 범위가 표시되지 않습니다.

최소 가격만 표시하려면 다음 코드를 사용자 함수 파일에 추가해보시기 바랍니다.

function custom_variation_price( $price, $product ) {
$price = '';
if ( ! $product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) {
$price .= woocommerce_price( $product->get_price() );
}
return $price;
}
add_filter( 'woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
// Source: support.woothemes.com

최소 가격 또는 최대 가격만을 표시하는 방법은 이 글을 참고해보세요. (참고로 링크된 글의 코드를 사용해보니 잘 안 되는 경우도 있는 것 같습니다.)

옵션 상품을 구성하는 방법은 "우커머스 옵션 상품 설정하기" 글을 참고해보시기 바랍니다. 옵션 상품을 정교하게 구성하고자 하는 경우 WooCommerce Extra Product Options 플러그인을 사용할 수 있습니다(참고).

참고

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

2개 댓글

댓글 남기기

* 이메일 정보는 공개되지 않습니다.