No permitir rellenar campo DNI sólo dándole al espacio
Publicado por Estella (3 intervenciones) el 07/02/2019 18:02:25
Hola, encontré un código para crear el campo DNI en la plataforma de comercio electrónico WooCommerce.
Ese código (que no es mío eh) funciona bien, crea un campo en el formulario de pedidos para el NIF / CIF y lo guarda y lo registra correctamente.
El problema viene cuando algunos clientes le dan a la barra espaciadora, y el formulario lo valida como un campo "relleno", y deja pasar al siguiente apartado.
¿Alguien sabría qué debería poner para que esto no suceda?
He leído en algún sitio que con "una expresión regular" igual se solucionaba pero yo no soy experta en PHP y no sé cómo integrar esa "validación" o expresión regular en el siguiente código, que es el que crea el campo NIF:
Ese código (que no es mío eh) funciona bien, crea un campo en el formulario de pedidos para el NIF / CIF y lo guarda y lo registra correctamente.
El problema viene cuando algunos clientes le dan a la barra espaciadora, y el formulario lo valida como un campo "relleno", y deja pasar al siguiente apartado.
¿Alguien sabría qué debería poner para que esto no suceda?
He leído en algún sitio que con "una expresión regular" igual se solucionaba pero yo no soy experta en PHP y no sé cómo integrar esa "validación" o expresión regular en el siguiente código, que es el que crea el campo NIF:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
* AÑADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
*/
function woo_custom_field_checkout($checkout) {
echo '
';
woocommerce_form_field( 'nif', array( // Identificador del campo
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'required' => true, // ¿El campo es obligatorio 'true' o 'false'?
'label' => __('NIF / CIF'), // Nombre del campo
'placeholder' => __('99999999D'), // Texto de apoyo que se muestra dentro del campo
), $checkout->get_value( 'nif' )); // Identificador del campo
echo '
';
}
add_action( 'woocommerce_after_checkout_billing_form', 'woo_custom_field_checkout' );
/*
* ACTUALIZAR DETALLES DEL PEDIDO CON EL NUEVO CAMPO
*/
function woo_custom_field_checkout_update_order($order_id) {
if ( ! empty( $_POST['nif'] ) ) {
update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'woo_custom_field_checkout_update_order' );
/*
* MOSTRAR VALOR DEL CAMPO NIF LA PÁGINA DE EDICIÓN DEL PEDIDO
*/
function woo_custom_field_checkout_edit_order($order){
echo '
'.__('NIF').': ' . get_post_meta( $order->id, 'NIF', true ) . '
';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );
/*
* INCLUIR CAMPO NIF EN EL EMAIL DE NOTIFICACIÓN AL CLIENTE
*/
function woo_custom_field_checkout_email($keys) {
$keys[] = 'NIF';
return $keys;
}
add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');
Valora esta pregunta
0