WooCommerce VAT 번호 체크아웃 페이지를 추가하는 방법

게시 됨: 2020-12-17

WooCommerce VAT 번호 체크아웃 WooCommerce 결제 페이지에 VAT 번호 필드를 추가하시겠습니까? WooCommerce에는 VAT 번호 필드를 추가하는 기능이 내장되어 있지 않습니다. 그러나 체크아웃 페이지와 내 계정 페이지에 VAT 필드를 추가하는 사용자 정의 PHP 스크립트를 만들었습니다.

WooCommerce VAT 번호 체크아웃

유럽 ​​연합에서 제품을 판매하는 것은 대부분 법적 측면 때문에 매우 구체적입니다. 그러나 WooCommerce는 때때로 그것을 고려하지 않으므로 상점을 유럽 상황에 맞게 조정할 필요가 있습니다.

인보이스를 발행하려면 상점에서 VAT 식별 번호를 지원해야 합니다. 이 튜토리얼에서는 체크아웃 페이지에 VAT 필드를 추가하는 방법을 배웁니다.

결제 페이지에 VAT 필드를 추가하는 단계

따라야 할 단계는 다음과 같습니다.

  1. WordPress 사이트에 로그인하고 관리자로 대시보드에 액세스합니다.
  2. 대시보드 메뉴에서 모양 메뉴 > 테마 편집기 메뉴 를 클릭합니다. 테마 편집기 페이지가 열리면 확장자가 functions.php인 테마 함수 파일을 찾으십시오. 이 함수 파일을 열어 체크아웃 페이지에 VAT 필드를 추가하는 함수를 추가하십시오.
  3. functions.php 파일에 다음 코드를 추가합니다.
 /******************************** 프론트엔드 ******************* *********************/

/****************************

VAT 필드를 추가할 필터:
- 내 계정 - 양식 수정 -- 결제 필드
- 체크아웃 - 양식 편집 - 청구 필드
이 함수는 또한 양식 필드를 재정렬합니다.
***************************/

기능 add_woocommerce_billing_fields($billing_fields){

            // 청구서 수신 주소 양식 필드 재정렬
            $billing_fields2['billing_first_name'] = $billing_fields['billing_first_name'];
            $billing_fields2['billing_last_name'] = $billing_fields['billing_last_name'];

            $billing_fields2['billing_vat'] = 배열(
                        '유형' => '텍스트',
                        '라벨' => __('부가가치세 번호', 'keyelp-shop-customization' ),
                        '클래스' => 배열('형식 행 너비'),
                        '필수' => 거짓,
                        '명확한' => 사실
            );
                
            $merged_billing_fields = $billing_fields2 + $billing_fields;


            $merged_billing_fields 반환;

}

add_filter('woocommerce_billing_fields' , 'add_woocommerce_billing_fields');


/************
청구서 수신 주소를 인쇄할 때 VAT를 추가하는 필터:
- (1) 내 계정 
- (2) 체크아웃 - 주문 접수(체크아웃 완료 후),
+++ 인쇄된 출력의 형식을 지정하는 추가 필터.
*****/

// (1) 내 계정에 청구서 수신 주소 인쇄

add_filter( 'woocommerce_my_account_my_address_formatted_address', 'njengah_my_account_my_address_formatted_address', 10, 3 );

함수 njengah_my_account_my_address_formatted_address( $fields, $customer_id, $type ) {

            if ( $유형 == '청구' ) {
                        $fields['vat'] = get_user_meta( $customer_id, 'billing_vat', true );
            }
            $ 필드 반환;
}


// (2) Checkout -- Order Received (결제 완료 후 출력됨)

add_filter( 'woocommerce_order_formatted_billing_address', 'njengah_add_vat_formatted_billing_address', 10, 2 );

기능 njengah_add_vat_formatted_billing_address( $fields, $order ) {

            $fields['vat'] = $order->billing_vat;

            $ 필드 반환;

}



// 인쇄 서식을 위한 병합 VAT 변수 생성

add_filter( 'woocommerce_formatted_address_replacements', 'njengah_formatted_address_replacements', 10, 2 );

함수 njengah_formatted_address_replacements( $address, $args ) {

            $address['{vat}'] = '';
            $address['{vat_upper}']= '';

            if ( ! 빈( $args['vat'] ) ) {
                        $address['{vat}'] = $args['vat'];
                        $address['{vat_upper}'] = strtoupper($args['vat']);
            }

            반환 $ 주소;

}


//VAT를 포함하여 주소를 인쇄하기 위해 스페인어 형식을 정의합니다.

add_filter( 'woocommerce_localisation_address_formats', 'njengah_localisation_address_format' );

기능 njengah_localization_address_format( $formats ) {

            $formats['ES'] = "{이름}\n{회사}\n{vat_upper}\n{주소_1}\n{주소_2}\n{우편번호} {도시}\n{주}\n{국가} ";

            $ 형식을 반환합니다.

}


/******************************** 관리자 프로필 페이지 **************** ************************/

/********************

VAT 고객 메타 필드를 추가하기 위한 필터(청구서 수신 주소 그룹의 사용자 프로필 필드)

*****************/

add_filter( 'woocommerce_customer_meta_fields', 'njengah_customer_meta_fields' );

함수 njengah_customer_meta_fields( $fields ) {

            $fields['billing']['fields']['billing_vat'] = 배열(

                        'label' => __( 'VAT 번호', 'njengah' )

            );


            $ 필드 반환;

}


/******************************** 관리자 주문 페이지 ******************* *********************/


/************ 

주문 시 양식 편집에 VAT를 추가하는 필터 -- 관리 페이지

*********/

add_filter( 'woocommerce_admin_billing_fields', 'njengah_admin_billing_fields' );

기능 njengah_admin_billing_fields( $fields ) {

            $fields['vat'] = 배열(
                        '라벨' => __( 'VAT 번호', 'njengah' ),
                        '보여주다' => 참
            );

            $ 필드 반환;

}

/****************

필터를 사용하여 사용자 메타 필드의 VAT 필드를 주문 관리 양식으로 복사합니다(관리 페이지의 전용 버튼 클릭 후).

******************/


add_filter( 'woocommerce_found_customer_details', 'njengah_found_customer_details' );

기능 njengah_found_customer_details( $customer_data ) {

            $customer_data['billing_vat'] = get_user_meta( $_POST['user_id'], 'billing_vat', true );

            $customer_data 반환;

}
  1. 프론트 엔드의 결과는 다음과 같습니다. VAT 체크아웃 필드
  2. 다음은 관리자 측의 결과입니다. VAT 번호

결론

요약하면 WooCommerce 체크아웃 페이지에서 VAT 번호 체크아웃 필드를 추가하는 방법을 배웠습니다. 업데이트하는 동안 변경 사항이 손실되지 않도록 자식 테마의 functions.php 파일에 코드 조각을 추가하는 것이 좋습니다. 코드 조각은 발행된 송장에 VAT 번호를 자동으로 표시합니다.

유사한 기사