단순상품으로 등록하면 라벨에 할인 퍼센트로 표시되는데
옵션상품으로 등록하면 라벨이 단순 SALE로 표시되는데 퍼센트로 표시하고싶은데 어떻게하면 될까요?
사진첨부같이해드립니다.
@스레드봇
자문자답합니다.
위 댓글에 알려주신 코드
add_filter('woocommerce_sale_flash', 'my_woocommerce_sale_flash', 10, 3 );
function my_woocommerce_sale_flash($html, $post, $product){
$regular_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_price();
$saving_percentage = round(100 - ($sale_price / $regular_price * 100), 0) . '%';
return sprintf('<span class="onsale">-%s</span>', $saving_percentage);
};
이 코드는 단일(단품)상품은의 세일 퍼센트를 표시하는 코드이고
옵션이 설정된 상품(옵션상품)은
add_filter('woocommerce_sale_flash', 'my_woocommerce_sale_flash', 10, 3 );
function my_woocommerce_sale_flash($html, $post, $product){
$variation_regular_price = (float) $product->get_variation_regular_price();
$variation_sale_price = (float) $product->get_variation_price();
$saving_percentage = round(100 - ($variation_sale_price / $variation_regular_price * 100), 0) . '%';
return sprintf('<span class="onsale">-%s</span>', $saving_percentage);
};
으로 해당값을 variation_ 으로 변경하여 코드를 넣어야 정상적으로 나오네요.
코드조차 몰랐는데 코드까지 자세히 적어주시고 도와주셔서 정말 감사합니다!!
안녕하세요.
우커머스의 get_regular_price 함수는 상품의 정상 가격을 가져오는 함수입니다.
정상 가격을 설정했음에도 0으로 표시되는 문제는
뭔가 충돌이 있는 건 아닌지 확인해보시겠어요?
잠시 다른 테마로 바꿔서 확인해보시고
다른 플러그인을 하나씩 비활성화해가면서 충돌이 있는지 점검해보셔야 할 듯합니다.
고맙습니다.
@스레드봇
각각 옵션의 정상가격을 책정했는데에도 불구하고
계속 0으로 나오는거 보니 이상하네요.. 왜그럴까요?
@스레드봇
알려주신 코드 작성하여 홈페이지 확인결과
디버그모드에서 확인해보면 $regular_price : 0 으로 되어있어서 그런거일까요?
만약에 그렇다면 $regular_price을 어떻게 설정해야하는지 궁금합니다...
저희 쪽 테스트 서버에서 같은 가격으로 테스트해봤지만 -18%로 표시하고 있습니다.
기존의 코드 대신 아래의 코드로 적용해서
각각의 값들이 어떻게 표시되는지도 확인해보시겠어요?
add_filter('woocommerce_sale_flash', 'my_woocommerce_sale_flash', 10, 3 );
function my_woocommerce_sale_flash($html, $post, $product){
$regular_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_price();
$saving_percentage = round(100 - ($sale_price / $regular_price * 100), 0) . '%';
echo '$regular_price : ' . $regular_price . '<br>';
echo '$sale_price : ' . $sale_price . '<br>';
echo '$saving_percentage : ' . $saving_percentage;
return sprintf('<span class="onsale">-%s</span>', $saving_percentage);
};
고맙습니다.
@스레드봇
사진으로 첨부해서 보내드립니다.
코드는 위댓글에 알려주신 경로에 그대로 작업했습니다.
우커머스 상품 쪽 설정 문제는 아닌 듯합니다.
PHP에서 INF는 무한대를 뜻합니다.
뭔가 연산이 잘못됐거나 가격이 잘못됐을 수도 있습니다.
실제 적용하신 코드와 정상 가격, 할인 가격 정보도 알려주시겠어요?
고맙습니다.
@스레드봇
매번 답변주셔서 감사합니다.
코드 추가 후 확인했는데 뱃지부분에 --INF% 으로 표시되는데
상품등록시 옵션->기본값을 변경해야할까요?
아니면 다른 방법이 있을까요?
안녕하세요~^^
우커머스 woocommerce_sale_flash 필터를 사용하시면 해당 문구를 수정하실 수 있습니다.
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
add_filter('woocommerce_sale_flash', 'my_woocommerce_sale_flash', 10, 3 );
function my_woocommerce_sale_flash($html, $post, $product){
$regular_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_price();
$saving_percentage = round(100 - ($sale_price / $regular_price * 100), 0) . '%';
return sprintf('<span class="onsale">-%s</span>', $saving_percentage);
};
고맙습니다.