Tras la última actualización de ¿Cómo añadir un campo NIF o CIF a WooCommerce 2.1?, código publicado inicialmente en ¿Cómo añadir un campo NIF o CIF a WooCommerce 2.0?, no habíamos tenido que realizar ningún tipo de modificación sobre el mismo hasta que se ha publicado WooCommerce 2.4 y hemos detectado, gracias al aviso de uno de nuestros lectores, un fallo en el orden de los campos que se muestran en el formulario de la página de finalización de la compra.

Tras algunas pruebas, ya hemos dado con la configuración correcta, así que procedemos a publicar el código PHP íntegro que necesitas para que todo vuelva a la normalidad. En esta ocasión le hemos añadido directamente la validación del campo NIF/CIF, que publicamos en Validando el campo NIF o CIF en WooCommerce y que permite la validación de cualquier tipo de número NIF, CIF o NIE. Recuerda que este código PHP debe ser añadido al archivo functions.php del tema hijo o padre que estés utilizando:

Copiar al portapapeles

Como siempre esperamos que este nuevo código os resulte útil y quedamos a la espera de vuestros comentarios, aportes y sugerencias.

Actualización: Hemos solucionado varios errores que hemos detectado en el código publicado originalmente.

Artículos relacionados

Comentarios

Suscríbete
Notificar de
guest
27 Comentarios
Más antiguos
Más recientes Más votados
Inline Feedbacks
Ver todos los comentarios
Sergio
Sergio
30 de agosto de 2015 3:08

Muchas gracias por el código, lo he usado para las versiones anteriores de WP y me está siendo de gran ayuda. Ahora con la versión 2.4 me encontré con algunos problemas y llegué aquí. Aún con este nuevo código me los estoy encontrando, como por ejemplo un orden diferente de los campos en la dirección de facturación y envío, junto con algunos problemas de formato en el apartado de edición de la dirección de envío en el apartado «Mi cuenta» (aparecen los campos de email y teléfono fuera de sitio).
Ya que hemos añadido la posibilidad de tener teléfono y email de envío diferentes de los de facturación, estaría bien poder ver estos datos en la edición del pedido (apartado del administrador de la tienda), así como en el mail de nuevo pedido. Con este código solo aparece el teléfono, no el email.

Carlos
Carlos
23 de septiembre de 2015 17:43

Muchas gracias por vuestros excelentes códigos. He ido a aplicar esta nueva actualización en un woocommerce de pruebas que estoy haciendo pero me muestra la pantalla blanca del admin cuando subo el archivo functions. Podéis darme alguna sugerencia de como solucionarlo. Muchísimas gracias y seguid así.

Art Project Group
Art Project Group
23 de septiembre de 2015 19:48
Responder a  Carlos

Si te devuelve pantallazo en blanco al subir el archivo functions.php, obviamente tienes algún fallo en ese archivo. ¡Revísalo!

Un saludo.

ntr
ntr
7 de octubre de 2015 12:32

Hol y gracias por el codigo.
Una prunta!.
¿se puede hacer para que el DNI/CIF no sea obligatorio, pero en caso de que se rellene se valide para que quede bien puesto?

Eso me pasa en mi web, tengo clientes que no quieren dar el DNI, pero otros que si quieren factura a su nombre y necesito que lo pongan bien.
No quiero que el dni sea obligatorio, pero necesito que en caso de que se rellene, sea un dato real.

Gracias.

Art Project Group
Art Project Group
7 de octubre de 2015 12:35
Responder a  ntr

Se puede hacer sin problema. Sólo hay que cambiar el atributo required a false.

Un saludo.

ntr
ntr
9 de octubre de 2015 13:28
Responder a  Art Project Group

ya lo he arreglado un poco, dentro de la comprobacion del DNI, en la respuesta de falso he puesto esto:
if(empty($_POST[‘billing_nif’])){
add_action( ‘woocommerce_checkout_process’, ‘validando_campo’ );

Quedando asi:

if ( $falso ) {

if(empty($_POST['billing_nif'])){
add_action( 'woocommerce_checkout_process', 'validando_campo' );

}

else{
wc_add_notice( __( 'Por favor, introduzca un NIF/CIF valido.' ), 'error' );
} }

De esta forma, antes de dar un error comprueba que el campo no este vacio, si esta vacio te da un ok y si no te da el mensaje de error.

Pero aun asi falla otra cosa que no me habia fijado.

Resuta que si pones en dni ksifjrhy o algo que tenga menos de 9 letras, te lo da como DNI VALIDO ¿?.

Asi que si en dni pongo :
abcefgh–> DNI OK (menos de 9 caracteres)
abc3–> DNI FALSO tiene menos de 9 caracteres pero contiene un numero
abcdefghijkl–> DNI FALSO
«VACIO»–> DNI OK

Parece que este es una tonteria, pero hay muchos clientes que en el campo dni ponen «no tengo» o no quiero factura, o que ponen la palabra «iva» o «no».

Art Project Group
Art Project Group
9 de octubre de 2015 14:15
Responder a  ntr

Actualizado.

Un saludo.

ntr
ntr
9 de octubre de 2015 16:53
Responder a  Art Project Group

ok, funciona a la mil maravillas.

Art Project Group
Art Project Group
9 de octubre de 2015 14:00
Responder a  ntr

Efectivamente hay un pequeño fallo.

Añadimos tu pequeña mejora y publicamos el nuevo código con el control necesario para evitar esa trampa.

Muchas gracias por tu aviso.

Un saludo.

ntr
ntr
8 de octubre de 2015 17:37
Responder a  Art Project Group

Hola, y gracias por responder.

El valor esta en false, pero el que no se ponga dni da mensaje como que no es un numero válido.

Creo que el problema es que la validación de dni entra en conflicto con que no sea obligatorio, ya que todo lo que no sea un dni verdadero ( caso del 0 o un valor vacio) es considerado como falso.

Lo que no se es como hacer para que la validacion no cuente el 0 o el valor null, o que esos valores sean considerados DNI autenticos.

Gracias

Jorge
Jorge
11 de octubre de 2015 19:28

Hola,
uso vuestro plugin «APG Weight and Postcode/State/Country Shipping» para configurar los gastos de envío, y me funciona a las mil maravillas. Os felicito.
Ahora quisiera añadir las funcionalidades que explicáis en este post. Tras pegar el código en el archivo functions.php de mi tema, aparecen los campos correctamente pero, tal como comentaba Sergio más arriba, el formato se desconfigura. Os muestro unas capturas de pantalla para que veáis cómo queda.

En el apartado Dirección de facturación de la Caja, queda así:comment image
Me gustaría que el CIF/NIF quedara a la derecha del Nombre de la empresa y que el Correo electrónico quedara junto al Teléfono.

Y en el apartado Dirección de envío de la Caja, queda así:comment image
Como podéis ver, las cajas de Correo electrónico y Teléfono quedan abajo y «descolgadas». Me gustaría que aparecieran debajo de las cajas de texto Nombre de la empresa-NIF/CIF, y que el formato fuese el mismo.

En la zona de edición del usuario de la Dirección de facturación, queda así:comment image
Al igual que comentaba anteriormente, me gustaría que el CIF/NIF quedara a la derecha del Nombre de la empresa y que el Correo electrónico quedara junto al Teléfono. Además, el botón de Guardar cambios está «descolgado»; debería quedar abajo a la izquierda.

En la zona de edición del usuario de la Dirección de envío, queda así:comment image
Tal como comentaba antes, las cajas de Correo electrónico y Teléfono quedan abajo y «descolgadas». Me gustaría que aparecieran debajo de las cajas de texto Nombre de la empresa-NIF/CIF, y que el formato fuese el mismo. Aqui el botón de Guardar cambios aparece bien posicionado.

¿Tenéis alguna solución para esto?
Muchas gracias.

Art Project Group
Art Project Group
11 de octubre de 2015 19:38
Responder a  Jorge

Hola Jorge.

Efectivamente en algunas instalaciones quedan desubicados algunos campos. La única solución que te podemos dar para solucionar tu problema es nuestra Consultoría técnica.

Un saludo.

Sixto Cabañas
Sixto Cabañas
26 de octubre de 2015 11:29

A la hora de validar el CIF/NIF cuando se trata de un DNI no da problemas pero cuando introduzco un CIF con su letra delante se produce el siguiente mensaje «SyntaxError: Unexpected token =» se os ocurre cual puede ser el problema. Se puede eliminar el proceso de validación, como mal menor?

Gracias y saludos,

Art Project Group
Art Project Group
26 de octubre de 2015 13:31
Responder a  Sixto Cabañas

Hola Sixto.

Hemos probado los dos CIF que nos has enviado y nos funciona sin ningún tipo de problema, por lo seguramente el error no te lo está generando nuestro código.

Un saludo.

Art Project Group
Art Project Group
26 de octubre de 2015 11:31
Responder a  Sixto Cabañas

¿Puedes mandarnos por correo el CIF que estás probando para hacer algunas pruebas?

Un saludo.

Alfonso
Alfonso
19 de noviembre de 2015 22:02

Muchas gracias por el código, me ha venido genial la verificación del DNI.

Gracias

goyo
goyo
24 de noviembre de 2015 12:25

tambien tengo problemas con campo nif sale esto SyntaxError: Unexpected token = cuando quiero acabar la compra. tengo la ultima version de WordPress 4.3.1 y la ultima version de woocommerce 2.4.10

Art Project Group
Art Project Group
24 de noviembre de 2015 14:23
Responder a  goyo

En principio ese error no tiene nada que ver con el código aquí publicado.

Un saludo.

ABermo
ABermo
10 de diciembre de 2015 11:04

Hola. Utilizo el plugin de «WooCommerce PDF Invoices & Packing Slips» para generar las facturas / albaranes en PDF. Con vuestro código implementado ocurre que el campo de teléfono de cliente lo imprime dos veces en las facturas/albaranes. Es decir lo repite al final de los datos de cliente, en el encabezado de esta, poniéndolo en dos filas consecutivas ¿Alguna idea?

gracias!

Art Project Group
Art Project Group
10 de diciembre de 2015 11:09
Responder a  ABermo

Algo has hecho mal ya que nosotros también utilizamos ese plugin y nos muestra todos los datos de cliente correctamente.

Un saludo.

ABermo
ABermo
10 de diciembre de 2015 12:36

Goyo, eso se debe a que en la comprobación del NIF/CIF, dentro de la función validando_campo() está esta línea:
echo $num[8] .» == «.chr( 64 + $n ).» – » . substr( $n, strlen( $n ) – 1, 1 );
eliminala o coméntala con «/» antes. Ha debido quedarse ahí accidentalmente.

danilinked
danilinked
6 de octubre de 2016 18:19
Responder a  ABermo

Gracias por la ayuda.

Para todos aquellos que les surja el problema “SyntaxError: Unexpected token =” yo lo he solucionado como dice ABermo y añadiendo el return true; else $false=false; ya que al poner el CIF (X00000000) me daba este error, Espero que a alguien le sirva y gracias por este post, Me ha ayudado mucho ;)

if ( preg_match( ‘/^[ABCDEFGHJNPQRSUVW]{1}/’, $nif ) && isset ( $num[8] ) ) {
//echo $num[8] .» == «.chr( 64 + $n ).» – » . substr( $n, strlen( $n ) – 1, 1 );
if ($num[8] == chr(64 + $n) || $num[8] == substr($n, strlen($n) – 1, 1)) { //CIF válido
return true;
}
else
{
$falso = false;
}
}

pepito
pepito
20 de diciembre de 2018 17:00

amigo gracias pero una pregunta sirve para las versiones del 2018??????????????????????? gracias

Art Project Group
Art Project Group
20 de diciembre de 2018 18:19
Responder a  pepito

Este código está absolutamente obsoleto dado que hace ya muchísimos meses que publicamos el plugin WC – APG NIF/CIF/NIE Field.

Un saludo.

Ivan
Ivan
6 de mayo de 2019 17:17

No tengo redes sociales (ni las tendré), y no puedo ver el código por el aviso que hace un blur sobre el mismo. Gran fallo.

Art Project Group
Art Project Group
6 de mayo de 2019 19:32
Responder a  Ivan

De todas formas no necesitas el código, sólo necesitas instalar este plugin y tendrás todo el código publicado y mucho más.

Si aún así necesitas el código, por favor pídenoslo al correo electrónico y gustosamente te lo enviamos.

Un saludo.

Art Project Group
Art Project Group
6 de mayo de 2019 19:30
Responder a  Ivan

Pues sí, no está pensado para casos tan excepcionales como el tuyo ;-)

Te mandamos el código al correo electrónico que indicas en tu comentario.

Un saludo.

Productos y servicios

Últimas publicaciones

Últimos comentarios

¡Suscríbete!

Lista de correos de APG

PROTECCIÓN DE DATOS: De conformidad con las normativas de protección de datos, le facilitamos la siguiente información del tratamiento: (+)

  • Responsable: Art Project Group.
  • Fines del tratamiento: dar respuesta a las consultas o cualquier tipo de petición que sea realizada por el usuario a través de cualquiera de las formas de contacto que se ponen a su disposición en la página web. Envío de comunicaciones de productos o servicios (con su consentimiento).
  • Derechos que le asisten: acceso, rectificación, portabilidad, supresión, limitación y oposición. Más información sobre el tratamiento en los Política de Privacidad.

¡Lo que contamos en !

Se ha publicado #WooCommerce 10.7: mejoras en rendimiento, analítica más completa y optimización de la Store API para integraciones más rápidas y eficientes.

Una versión centrada en escalabilidad y datos.

¡Actualiza!

15 de abril de 2026

Se ha publicado #WooCommerce 10.6.2: actualización de mantenimiento con correcciones de errores y mejoras de estabilidad tras la rama 10.6.

Recomendado actualizar para evitar incidencias.

1 de abril de 2026

Se ha publicado #WordPress 6.9.4: actualización de mantenimiento que corrige errores de seguridad detectados en el núcleo y el editor para mejorar la estabilidad general.

Debes actualizar.

11 de marzo de 2026

Se ha publicado #WordPress 6.9.3: actualización de mantenimiento que corrige errores detectados en el núcleo y el editor para mejorar estabilidad y compatibilidad.

Recomendado actualizar.

11 de marzo de 2026