2014-09-07 1 views
0

Woocommerce 카트에서 계산 용 쿠폰을 사용하고 있습니다. 총 금액에 자동으로 할인을 추가하여 적절한 금액을 지불 게이트웨이로 보낼 수 있습니다.woocommerce에서 쿠폰을 취소하지 않고 할인 정보를 숨기기

방문자의 쿠폰/할인에 대한 모든 정보를 숨기고 싶습니다.

문제 : I (아래 참조) 찾은 유일한 방법은

add_filter('woocommerce_coupons_enabled', 'hide_coupon_field'); 
function hide_coupon_field($enabled) { 
    if (is_cart() || is_checkout()) { 
     $enabled = false; 
    } 
    return $enabled; 
} 

거기가 ... 쿠폰 필드 (합계)에서 행과 메시지를 숨 깁니다뿐만 아니라 쿠폰을 사용하지 않도록 설정 쿠폰을 취소하지 않고도 할인과 관련된 모든 것을 숨길 수있는 후크?


편집 : 그것은 단순히 주문 세부 사항의 할인 된 줄을 제거하는 것은 불가능처럼 보인다. 그래서 제안을 helgatheviking에서 영감을 간단한 솔루션은이 부분

<?php if ($totals = $order->get_order_item_totals()) foreach ($totals as $total) : ?> 
      <tr> 
       <th scope="row"><?php echo $total['label']; ?></th> 
       <td><?php echo $total['value']; ?></td> 
      </tr> 
    <?php endforeach; ?> 

에 의해 생성 된 모든 합계를 제거하고 다음 중 하나에 의해 그들에게 내가 필요로하는 방법을 하나를 반향 수 있습니다. 나는 이미이

<td><?php echo number_format($order->get_total(),2,'.','')."&#8364;"; ?></td> 

로 주문 전체를 보여줄 수 있어요하지만 지금은 주문 소계

<td><?php echo number_format($order->get_item_subtotal(),2,'.','')."&#8364;"; ?></td> 

이 나에게 경고를주는이 코드를 검색하기 위해 노력하고있어 : 누락 된 인수 WC_Order :: get_item_subtotal()에 대해 1입니다.

get_item_subtotal()이 주문 소계를 얻는 올바른 방법인지 확실하지 않습니다. 그렇다면 어떤 주장이 빠졌습니까? 또는 get_line_subtotal 또는 get_subtotal_to_display을 검색해야합니까?

+0

당신은'get_item_subtotal 보면()'은'WC_Order' 클래스의 방법은 당신이'$ item' 인수가 필요하다는 것을 볼 수 있습니다. – helgatheviking

답변

0

아니요, 카트 클래스의 get_coupons() 메서드에는 필터가 없어 보이지 않습니다. 만약 당신이 WooCommerce git repo에 가서 여기에 필터가있는 요청을 보내면 왜 그곳에 있어야하는지에 대한 설명을 들려 주면, 그것들을 합치는 것을 고려할 것입니다. 몇 번 해봤습니다.

또한, 테마에 checkout/review-order.phpcart/cart-totals.php 템플릿을 복사 한 다음 두 코드 블록을 제거 할 수

:이 표시를 방지 함을 명심

<?php foreach (WC()->cart->get_coupons('cart') as $code => $coupon) : ?> 
       <tr class="cart-discount coupon-<?php echo esc_attr($code); ?>"> 
        <th><?php wc_cart_totals_coupon_label($coupon); ?></th> 
        <td><?php wc_cart_totals_coupon_html($coupon); ?></td> 
       </tr> 
      <?php endforeach; ?> 

<?php foreach (WC()->cart->get_coupons('order') as $code => $coupon) : ?> 
    <tr class="order-discount coupon-<?php echo esc_attr($code); ?>"> 
     <th><?php wc_cart_totals_coupon_label($coupon); ?></th> 
     <td><?php wc_cart_totals_coupon_html($coupon); ?></td> 
    </tr> 
<?php endforeach; ?> 

을 모든 쿠폰 할인은 다음 스크린 샷처럼 보입니다.

Hide coupons in Cart Hide coupons in Checkout

나는보다 복잡한 WC 템플릿을 무시하는 팬이 아닙니다 ... 특히 결제 과정과 관련이 없습니다. WooCommerce가 개발됨에 따라 테마 템플릿 재정의가 쓸모 없게되었을 때 작동을 멈춘 많은 사이트를 수정해야했습니다.

편집

나는 order/order-details.php 템플릿의 할인 행을 추적. $order->get_order_item_totals() 함수에서 온 것입니다. 이것은 행 배열을 반환하고 필터링 될 수 있습니다. 그래서,이 순서받은 페이지에서 행을 제거합니다

function so_25714509_get_order_item_totals($total_rows){ 
    unset($total_rows['order_discount']); 
    return $total_rows; 
} 
add_filter('woocommerce_get_order_item_totals', 'so_25714509_get_order_item_totals'); 
+0

고맙습니다. 이전에이 작업을 수행하고 있었지만 주문 세부 정보 (체크 아웃을 진행 한 후 페이지)에서 할인 라인을 제거 할 수 없었습니다. 나는 더 간단한 해결책이 있다고 생각했지만 당신의 방법이 가장 쉬운 방법이라고 생각합니다. ?> \t \t \t \t \t \t \t < 나는 모든 합계'get_order_item_totals()) foreach는 ($ 총 $ 등의 합계)를 표시 할 책임이 부분을 제거 th scope = "row"> \t \t \t \t \t \t \t \t ' – wyem

+0

그리고 이제는 필요할 때마다 호출하는 각 줄을 표시하려고합니다. 나는 템플릿의 부분합을 되풀이하는 것만으로 ... 이걸 좀 도와 주시겠습니까? – wyem

+0

나는' get_item_subtotal(), 2, '.', '')로 보여주기 위해 노력하고있다. "€"; ?>'하지만 오류가 있습니다 ...이'get_item_subtotal()'을 어떻게 바꾸면됩니까? – wyem

관련 문제