2017-09-13 6 views
3

으로 채워지는 woocommerce 체크 아웃 페이지에 사용자 정의 필드를 추가했지만이 방법을 찾기 위해 고심하고 있습니다. field을 편집 할 수 없습니다.Woocommerce 사용자 지정 체크 아웃 필드를 편집 할 수 없게 만들기

내가 내 코드에서 변경해야합니까
//Add custom field 
function custom_woocommerce_checkout_fields($checkout_fields = array()) { 

    $checkout_fields['order']['imei'] = array(
     'type'   => 'text', 
     'class'   => array('my-field-class form-row-wide'), 
     'label'   => __('IMEI'), 
     'placeholder' => __('imei'), 
     'default' => $_GET['imei'],    
    ); 

    return $checkout_fields; 
} 
add_filter('woocommerce_checkout_fields', 'custom_woocommerce_checkout_fields'); 

이를 달성하기 :

나는 function.php에 다음 코드를 추가?

+0

'disabled'를 속성으로 추가하십시오. –

+0

'$ checkout_fields [ 'order'] [ '_ imei']'이렇게하면 관리자로부터 숨길 수 있습니다. –

+0

@BoianIvanov 속성을 추가하는 방법이 너무 명확하지 않아 좋은 문서를 찾지 못하는 것 같습니다. 그것을 설명합니다. –

답변

1

당신은 readonly 재산 이 텍스트 <imput> 필드를 시도해야 (편집 할 수 없습니다 의미). 기능에 if(empty($_GET['imei'])) return; 설정 : 원하는 체크 아웃 URL에 설정하여 '아미산'이 있어야한다

:이 조건을 가지고 현장을 만들기 위해
http://www.example.com/checkout/?imei=3545454653는 값으로 나타납니다.

코드 :

// Display 
add_action('woocommerce_after_order_notes', 'custom_woocommerce_checkout_fields'); 
function custom_woocommerce_checkout_fields($checkout) { 
    // Only display field if the 'emei' is set in the checkout url 
    if(empty($_GET['imei'])) return; 

    echo '<p class="form-row my-field-class form-row-wide woocommerce-validated" id="imei_field"> 
     <label for="imei" class="">'.__('IMEI').'</label> 
     <input type="text" class="input-text " name="imei" id="imei" placeholder="'.__('IMEI').'" value="'.$_GET['imei'].'" readonly> 
    </p>'; 
} 

// Save 
add_action('woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta'); 
function custom_checkout_field_update_order_meta($order_id) { 
    if (! empty($_POST['imei'])) { 
     update_post_meta($order_id, '_imei', sanitize_text_field($_POST['imei'])); 
    } 
} 

코드 활성 자식 테마 (또는 테마)의 function.php 파일에 간다 나 또한 어떤 플러그인 파일입니다.

이 (정의 $order_id에 대한) 값 을 얻으려면 3 + WooCommerce 버전에서 테스트 작업 :

$imei = get_post_meta($order_id, '_imei', true); 
0

이 코드를 사용해보십시오. 그것은 나를 위해 일합니다. 필드 배열에 사용자 지정 특성 매개 변수를 추가하기 만하면됩니다.

//Display custom field 
function custom_woocommerce_checkout_fields($checkout_fields = array()) { 

$checkout_fields['order']['imei'] = array(
    'type'   => 'text', 
    'class'   => array('my-field-class form-row-wide'), 
    'label'   => __('IMEI'), 
    'placeholder' => __('imei'), 
    'default' => $_GET['imei'], 
    'custom_attributes' => array('disabled' => true) 
); 

return $checkout_fields; 
} 

add_filter('woocommerce_checkout_fields', 'custom_woocommerce_checkout_fields'); 

// Save custom field 
add_action('woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta'); 
function custom_checkout_field_update_order_meta($order_id) { 
    if (! empty($_POST['imei'])) { 
     update_post_meta($order_id, '_imei', sanitize_text_field($_POST['imei'])); 
    } 
}