2017-09-13 148 views
3

我在由URL填充的woocommerce結帳頁上添加了一個自定義字段,但我正在努力找到一種方法來使此field不可編輯。使Woocommerce自定義結帳字段不可編輯

我下面的代碼添加到function.php

//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'); 

我應該在我的代碼更改爲做到這一點?

+0

添加'disabled'作爲屬性。 –

+0

嘗試'$ checkout_fields ['命令'] ['_ imei']'這樣它將被隱藏管理員 –

+0

@BoianIvanov我不太確定如何添加一個屬性,似乎無法找到一個很好的文檔解釋它。 –

回答

1

您應該嘗試<imput>字段的readonly屬性(意思是不可編輯)

你應該需要有你的「峨眉」在結賬網址等設定:
http://www.example.com/checkout/?imei=3545454653使該字段顯示數值,因爲我有這樣的條件:在功能if(empty($_GET['imei'])) return;集。

代碼:

// 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文件或也以任何插件文件。

測試和工作的WooCommerce版本3+

爲了得到價值(用於定義$order_id

$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'])); 
    } 
} 
相關問題