programing

Wordpress Woocommerce 사용자 지정 배송 필드(AJAX)에서 값 가져오기

newstyles 2023. 6. 13. 22:04

Wordpress Woocommerce 사용자 지정 배송 필드(AJAX)에서 값 가져오기

그래서 저는 우커머스를 이용한 전자상거래를 하고 있으며 트랙 배송비는 커스텀 배송을 이용합니다.그리고 이미 새로운 입력 데이터를 추가했습니다(선택).아래 그림에서 볼 수 있는 것처럼:

// Hook in
add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields');

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields($fields) {

    $fields['billing']['billing_city'] = array(
        'type' => 'select',
        'label' => __('Kota / Kabupaten', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kota / Kabupaten'
        )
    );
    $fields['shipping']['shipping_city'] = array(
        'type' => 'select',
        'label' => __('Kota / Kabupaten', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kota / Kabupaten'
        )
    );


    $fields['billing']['billing_subdistrict'] = array(
        'type' => 'select',
        'label' => __('Kecamatan', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kecamatan'
        )
    );

    $fields['shipping']['shipping_subdistrict'] = array(
        'type' => 'select',
        'label' => __('Kecamatan', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kecamatan'
        )
    );


    return $fields;
}

Woocommerce 기본 데이터는 address_1, address_2, country, state, city를 가지고 있었지만 subdistrict라는 데이터가 하나 더 필요합니다.그 데이터(하위 구역)는 저장할 필요가 없습니다.하지만 저는 그 값을 트랙 배송비의 파라미터로 사용해야 합니다.

저는 이미 새로운 class-custom-shipping-delivery.php를 만들고 $subdistrict 데이터를 수동으로 설정하려고 하기 때문에 이미 그 기능이 완벽하게 작동하는지 확인하고 있습니다.

//custom-shipping.php
$province = $package['destination']['state'];
$city = $package['destination']['city'];

$subdistrict= 'something';
//How to get the data from custom field (ajax) 
//because I need to see the shipping fee result before Checkout (and update it to add rate)


$destination_code = $this->getDestinationCode($province,$city,$subdistrict);

$ongkir = $this->cek_ongkir($origin,$destination_code,$weight);

//print_r();

// send the final rate to the user. 
$this->add_rate(array(
    'id' => $this->id,
    'label' => $this->title,
    'cost' => $ongkir
));

요약:.

하위 구역에서 값을 가져오는 방법 입력 유형 선택(체크아웃 페이지)?

죄송합니다. 제가 다른 사람의 작업을 편집해서 그 코드를 전혀 이해할 수 없습니다.하지만 그들이 그 값을 받는 것을 잊어버린 것 같습니다. 왜냐하면 그들은 하드 코딩을 하기 때문이고 저는 워드프레스 초보자이기 때문에 체크아웃 양식에 데이터를 전달하는 방법을 모릅니다.

잠시 답을 검색한 후에 저는 답을 얻습니다.

요약: 위의 답변 세션을 사용하여 배송 사용자 지정 필드(ajax)에서 데이터를 가져옵니다.그래서 AJAX가 실행될 때.subdistrict' 필드의 값을 함수로 전송하여 세션에 저장합니다.

function ajax_process($subdistrict){
   //some code
   session_start();
   $_SESSION['subdistrict'] = $subdistrict;
}

그런 다음 다른 함수에서 세션 데이터를 잊어버립니다. 이 코드를 실행합니다.

@session_start();
$subdistrict = $_SESSION['subdistrict'];

여기 Woocommerce용 Checkout Field Editor라는 플러그인이 있습니다.

https://docs.woocommerce.com/document/checkout-field-editor/

그 플러그인은 단일 사이트 라이센스에 49달러인 것 같습니다.

다른 옵션은 직접 코딩하는 것입니다.여기 튜토리얼이 있습니다.

https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

언급URL : https://stackoverflow.com/questions/40353727/wordpress-woocommerce-get-value-from-custom-shipping-field-ajax