php - texto - Hacer que el campo de pago personalizado de WooCommerce no sea editable
woocommerce facturación es un campo requerido (1)
Debería probar este campo de texto <imput>
con la propiedad readonly
(es decir, no editable) .
Debería tener su ''emei'' configurado en la url de pago como:
http://www.example.com/checkout/?imei=3545454653
para que aparezca el campo con el valor, ya que tengo esta condición:if( empty($_GET[''imei''])) return;
establecer en la función.
El código:
// 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''] ) );
}
}
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
Probado y funciona en WooCommerce versiones 3+
Para obtener el valor (para un
$order_id
definido) :
$imei = get_post_meta( $order_id, ''_imei'', true );
Agregué un campo personalizado en la página de pago de woocommerce que está lleno por URL
pero me cuesta encontrar la manera de que este field
no sea editable.
Agregué el siguiente código a 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'' );
¿Qué debería cambiar en mi código para lograr esto?