WooCommerce에서 단순 및 가변 제품의 판매 가격 아래에 "You Save x%"를 표시하는 방법

게시 됨: 2019-04-03

우리 모두는 할인이 고객을 유인하고 매출을 높이는 방법을 알고 있습니다. 그러나 모든 소매업체와 전자상거래 웹사이트에서 동시에 할인을 제공하는 요즘에는 더 저렴한 가격에 상품을 판매하고 있다는 것을 보여주는 것만으로는 충분하지 않습니다. 이전 가격과 새 가격만 표시되면 고객은 계산을 통해 실제로 절약한 금액을 계산해야 합니다. 이를 처리하는 더 좋은 방법은 고객이 구매할 때 절약한 금액의 백분율을 표시하는 것입니다. 이것은 그들에게 더 나은 아이디어와 구매 여부를 결정하는 더 쉬운 방법을 제공합니다. WooCommerce에서 단순 및 가변 제품의 판매 가격 옆에 "You Save x%"를 표시하는 방법을 살펴보겠습니다.

간단한 제품의 경우 판매 가격보다 % 할인된 금액을 표시하는 방법

일반 상품과 판매가를 알면 단순 상품의 경우 절약된 금액의 백분율을 표시하는 것이 쉽습니다. 일반적인 경우 단순 제품에 대한 이러한 가격은 다음과 같이 표시됩니다.

display “You Save x%” below sale prices for simple and variable products in WooCommerce - Default simple product page
판매 중인 단순 제품의 기본 표시

하위 테마의 functions.php 파일에 아래 코드를 추가하면 단순 제품 가격 아래에 "You Save x%"가 표시되므로 사용자는 거래가 얼마나 좋은지 나쁜지 즉시 알 수 있습니다.

 함수 ts_you_save() {
  
  글로벌 $product;
  
   if( $product->is_type('simple') || $product->is_type('external') || $product->is_type('grouped') ) {
      
     	$regular_price = get_post_meta( $product->get_id(), '_regular_price', true ); 
        $sale_price = get_post_meta( $product->get_id(), '_sale_price', true );
     
     	if( !empty($sale_price) ) {
  
              $amount_saved = $regular_price - $sale_price;
              $currency_symbol = get_woocommerce_currency_symbol();

              $percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
              ?>
              <p><b>저장: <?php echo number_format($percentage,0, '', '').'%'; ?></b></p>				
              <?php		
        }
   }
}

add_action( 'woocommerce_single_product_summary', 'ts_you_save', 11 );

이 코드 스니펫에서 내장된 WooCommerce 후크 woocommerce_single_product_summaryts_you_save() 함수를 추가했습니다. 이 후크는 제품 제목 아래 영역을 가리킵니다. ts_you_save() 함수는 제품의 유형을 식별하고 제품이 세일 중인 경우 절약된 금액의 백분율을 계산합니다. CSS를 추가하여 원하는 방식으로 인쇄할 수 있습니다.

display “You Save x%” below sale prices for simple and variable products in WooCommerce - You Save Percentage Displayed for a Simple Product
단순 제품의 판매 가격 아래에 "You Save %" 표시

저장된 금액을 백분율과 함께 표시하려면 다음과 같은 방법으로 동일한 코드 조각을 약간만 수정할 수 있습니다.

 함수 ts_you_save() {
  
  글로벌 $product;
  
   if( $product->is_type('simple') || $product->is_type('external') || $product->is_type('grouped') ) {
      
     	$regular_price = get_post_meta( $product->get_id(), '_regular_price', true ); 
        $sale_price = get_post_meta( $product->get_id(), '_sale_price', true );
     
     	if( !empty($sale_price) ) {
  
              $amount_saved = $regular_price - $sale_price;
              $currency_symbol = get_woocommerce_currency_symbol();

              $percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
              ?>
              <p><b>저장: <?php echo number_format($amount_saved,2, '.', '')." (". number_format($percentage,0, '', '')."%)" ; ?></b></p>						
              <?php		
        }
   }
}

add_action( 'woocommerce_single_product_summary', 'ts_you_save', 11 );

number_format 함수는 4개의 인수를 허용하는 내장 PHP 함수입니다.

  1. 숫자 또는 우리의 경우에는 각각 저장된 금액과 백분율입니다(함수를 두 번 사용했습니다).
  2. 소수 자릿수. 백분율에 대해 소수 값을 표시하고 싶지 않기 때문에 저장된 금액에 대해 2로 설정하고 백분율에 대해 0으로 설정했습니다.
  3. 사용하려는 소수 구분 기호입니다. 저장된 금액은 점(.)으로, 백분율은 공백으로 설정했습니다.
  4. 천 단위 구분 기호입니다. 저장된 금액이 1000을 초과하는 경우 이 인수를 사용할 수 있습니다. 현재는 공백으로 설정했습니다.

이제 저장된 금액과 백분율이 가격 아래에 표시됩니다.

display “You Save x%” below sale prices for simple and variable products in WooCommerce - You Save Amount and Percentage Displayed for a Simple Product
단순 제품의 판매 가격보다 낮은 금액으로 "You Save %" 표시

당신을 표시하는 방법 가변 제품에 대한 판매 가격보다 % 할인

가변 제품의 경우 제품의 모든 변형이 다른 가격을 가질 수 있기 때문에 이것이 까다로워집니다. 예를 들어, 티셔츠는 더 큰 사이즈의 경우 더 높은 가격이 책정될 수 있는 반면 더 작은 사이즈의 동일한 티셔츠의 경우 가격은 더 낮을 수 있습니다. 이러한 경우 WooCommerce는 제품 제목 아래에 판매 가격 범위를 표시하고 변형을 선택하면 제품의 각 변형에 대한 일반 및 할인 가격이 장바구니 에 추가 버튼 위에 표시됩니다. 이것은 아래 이미지로 설명되었습니다.

display “You Save x%” below sale prices for simple and variable products in WooCommerce - Variable Product with Variation Selected
다양한 변형에 따라 가격이 다른 판매 중인 가변 제품의 변형 선택

이 경우 특정 변형에 대해 표시된 가격 아래에 저장된 백분율과 함께 "저장했습니다" 텍스트를 인쇄합니다. 하위 테마functions.phpfooter.php 파일 모두 에 코드 조각을 추가해야 합니다.

footer.php 파일에 추가할 다음 코드 조각에는 변형이 변경될 때 트리거되는 함수가 포함되어 있습니다. 이 경우 크기 드롭다운을 사용하여 크기 변형을 선택하거나 변경할 때 트리거됩니다. 이 함수는 특정 변형 ID를 캡처하여 ajax 호출을 통해 functions.php로 보냅니다.

 <스크립트>
jQuery(문서).ready(함수($) {
             
  $('input.variation_id').change( function(){
    	
    if( '' != $('input.variation_id').val() ) {
                     
        	        var var_id = $('input.variation_id').val(); // 선택한 변형 ID
      $.ajax({
        URL: "https://<your_woocommerce_site_url>/wp-admin/admin-ajax.php",
        		        데이터: {'액션':'ts_calc_percentage_saved','vari_id': var_id} ,
        		        성공: 함수(데이터) {

              만약 (데이터>0)
          {
            $( ".woocommerce-variation-price" ).append( "<p>저장: "+data+"%</p>");
          }
        		         },
        		        오류: 함수(errorThrown){
           			        console.log(errorThrown);
        		         }
    		        });                       
          }
   });
});
</스크립트>

<your_woocommerce_site_url> 을 WooCommerce 웹사이트의 기본 URL로 바꿔야 합니다.

functions.php 파일에 추가할 다음 코드 조각에는 변형 ID를 기반으로 제품의 정상 가격 및 판매 가격을 가져오고 백분율을 계산하고 바닥글의 ajax 함수에 동일한 값을 반환하는 ts_calc_percentage_saved 함수가 포함되어 있습니다. .php 파일.

 //이것은 WordPress에서 ajax가 호출하는 함수를 연결하는 방법입니다.
add_action("wp_ajax_ts_calc_percentage_saved", "ts_calc_percentage_saved");

//아래 함수는 footer.php의 ajax 스크립트를 통해 호출됩니다.
함수 ts_calc_percentage_saved(){
          // $_REQUEST에는 ajax를 통해 전송된 모든 데이터가 포함됩니다.
   		if ( isset($_REQUEST) ) {
       		        $퍼센트=0;
     			$variation_id = Sanitize_text_field($_REQUEST['vari_id']);
                        $variable_product = wc_get_product($variation_id);
                        $regular_price = $variable_product->get_regular_price();
                        $sale_price = $variable_product->get_sale_price();
     
       			if( !empty($sale_price) ) {
  
                             $amount_saved = $regular_price - $sale_price;
                             $currency_symbol = get_woocommerce_currency_symbol();

                             $percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
     			}
     			다이($퍼센트);
   		}
}

Sanitize_text_field() 함수는 클라이언트 측에서 수신한 입력을 살균하는 데 도움이 되는 WordPress 함수입니다.

따라서 이제 변형 가격 아래에 저장된 금액의 백분율과 함께 "저장했습니다"가 표시됩니다.

display “You Save x%” below sale prices for simple and variable products in WooCommerce - Variable Product with You Save Percentage Displayed below the Variation Price
드롭다운에서 변형을 선택하면 변형 가격 아래에 "절감 %"가 표시됩니다.

다음 줄의 추가 기능 내에 HTML 및 CSS를 추가하여 Ajax 기능 자체 내에서 원하는 대로 스타일을 지정할 수 있습니다.

$( ".woocommerce-variation-price" ).append( "<p>저장: "+data+"%</p>");

가변 제품의 경우 장바구니에 추가 버튼 대신 제품 제목 아래에 저장 % 표시

원하는 경우 위에 언급된 코드 스니펫에 코드 스니펫을 추가하여 "장바구니에 추가" 버튼 대신 제품 제목 아래에 저장된 백분율과 함께 저장 텍스트를 표시할 수 있습니다.

이 코드 조각은 위에서 언급한 코드 조각(footer.php 및 functions.php 파일에 있음) 외에 하위 테마의 functions.php 파일에 추가해야 합니다.

 //아래 코드는 가격을 이동하는 코드입니다.

함수 ts_shuffle_variable_product_elements(){
    if ( is_product() ) {
        글로벌 $post;
        $product = wc_get_product( $post->ID );
        if ( $product->is_type( '변수' ) ) {
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
            add_action( 'woocommerce_before_variations_form', 'woocommerce_single_variation', 20 );

            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
            add_action( 'woocommerce_before_variations_form', 'woocommerce_template_single_title', 10 );

            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
            add_action( 'woocommerce_before_variations_form', 'woocommerce_template_single_excerpt', 30 );
        }
    }
}
add_action( 'woocommerce_before_single_product', 'ts_shuffle_variable_product_elements' );

이 코드가 본질적으로 하는 일은 요소(제목 포함)를 제거하고 원하는 방식으로 재배열하는 것입니다. 그 결과 그림과 같이 가격 범위가 삭제되고 변형 가격이 아래에 저장 텍스트와 함께 변형을 선택하면 표시됩니다.

display “You Save x%” below sale prices for simple and variable products in WooCommerce - Variable Product with Variation Price and You Save Percentage Displayed below the Product Title
드롭다운에서 변형을 선택하면 제품 제목 아래에 변형 가격과 "절감 %"가 표시됩니다.