WooCommerce 카트에 프로그래밍 방식으로 면세 수수료 추가
저는 우커머스 카트에서 하는 몇 가지 계산에 따라 수수료를 추가하려고 하지만, VAT에서 제외하고 싶습니다.내 코드는 다음과 같습니다.
function woo_add_cart_fee( $cart ) {
global $woocommerce; $bookable_total = 0;
foreach(WC()->cart->get_cart() as $cart_item_key => $values) {
$_product = $values['data'];
//doing my stuff to calculate $fee variable
WC()->cart->add_fee( 'Fees: ', $fee, false, '' );
//WC()->cart->add_fee( 'Fees: ', $fee, true, '' );
//WC()->cart->add_fee( 'Fees: ', $fee, false, 'zero rate' );
//WC()->cart->add_fee( 'Fees: ', $fee, true, 'zero rate' );
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
저는 코멘트된 모든 버전을 사용해 보았고 각각 수수료에 대한 부가가치세도 포함되어 있습니다.
제가 그걸 어떻게 이룰 수 있을지 아십니까?
(업데이트): add_fee() 메서드가 있는 TAX OPTIONS
중요:TAX가 방법으로 작동하는지 여부는 woocommerce에서 세금 설정의 첫 번째에 달려 있습니다.질문에서 TAX 설정이 무엇인지 말하지 않았기 때문에 도움이 될 수 없습니다(세금 설정은 각 전자 상거래 웹 사이트마다 훨씬 더 다를 수 있습니다).
예를 들어, '제로 레이트' 세금 클래스를 사용하려고 하는데 고객 국가에 대해 올바른 '제로 레이트' 세금 클래스를 정의하지 않은 경우 다음과 같이 사용하려고 하면 작동하지 않습니다.
WC()->cart->add_fee( 'Fees: ', $fee, true, 'zero rate' );
사용자의 글로벌 세금 설정에 따라 달라집니다.
다음은 카트에 있는 3개 항목에 대한 실제 체크아웃 합계 스크린샷입니다(아래 코드 사용).
클래스 WC_Cart add_fe() 메서드, 카트에 추가 요금을 추가합니다.
add_fee( string $name, float $amount, boolean $taxable = false, string $tax_class = '' )
Parameters: $name Unique name for the fee. Multiple fees of the same name cannot be added. $amount Fee amount. $taxable (default: false) Is the fee taxable? $tax_class (default: '') The tax class for the fee if taxable. A blank string is standard tax class.
원본 답변(업데이트된 코드):
주요 문제는 다음과 같습니다.
- 구문 대신 구문을 사용하기 때문에 실제로 필요하지 않습니다.
- 만약 당신이 이것을 사용한다면 항상 그럴
= 0
것입니다.
대신 함수 외부에서 정의된 값을 얻기 위해 값 없이 사용합니다.
그러나 값을 0으로 설정하려면 함수 밖에서 정의되지 않은 경우 다음과 같이 수행합니다.
이제 함수 외부의 변수 값을 정의할 수 있습니다.
다음은 코드에 대한 작업 예제입니다.
// This variable value is passed to our function
$bookable_total = 1;
function woo_add_cart_fee( $bookable_total = 0 ) {
global $bookable_total;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// just for this example
$item_count = 0;
$item_fee = 5;
// going through each cart items
foreach( WC()->cart->get_cart() as $values ) {
$item = $values['data'];
if ( empty( $item ) )
break;
// getting the cart item_id
$item_id = $item->id;
$item_count++;
// your calculations
}
// We test $bookable_total value, defined to '1' outside our function
// and to 'O' if not defined outside (in this case the fee will be '0')
$fee = $item_count * $bookable_total * $item_fee;
// add_fee method (TAX will NOT be applied here)
WC()->cart->add_fee( 'Fees: ', $fee, false );
}
add_action( 'woocommerce_cart_calculate_fees','woo_add_cart_fee' );
이 코드는 테스트를 거쳐 작동합니다. 작동합니다.활성 하위 테마 또는 테마의 php 파일입니다.
변수가 외부에서 정의되지 않은 경우 값은 입니다.
참고: $temsids는 다음과 같이 가져오는 것이 좋습니다.
참조:
클래스 WC_카트 - 방법
언급URL : https://stackoverflow.com/questions/38894444/add-tax-free-fees-to-woocommerce-cart-programmatically
'programing' 카테고리의 다른 글
오라클 11g에 시퀀스가 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.07.13 |
---|---|
봄 부츠 3 - 자카르타와 자바. (0) | 2023.07.13 |
Python에서 Import 문의 a.는 무엇을 의미합니까? (0) | 2023.07.13 |
기본 문제: 기본 PL/SQL 콘솔 출력? (0) | 2023.07.13 |
초기화(C) 시 0.0f의 의미는 무엇입니까? (0) | 2023.07.13 |