2017-09-13 150 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'])); 
    } 
} 
相关问题