Cómo añadir el CIF/NIF/NIE en WooCommerce

WooCommerce, al ser un plugin global, inicialmente no contempla peculiaridades de cada país, como es el caso de la inclusión de un campo específico para el CIF/NIF/NIE español, pero se puede añadir fácilmente.

nif

Añadir campo CIF/NIF/NIE con código

Para que WooCommerce incluya un nuevo campo en el que introducir el CIF/NIF/NIE debes añadirlo, para lo que deberás incluir el siguiente código en el archivo functions.php del tema hijo activo o en tu propio plugin de funciones.

/*
* AÑADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
*/
function woo_custom_field_checkout($checkout) {
  echo '<div id="additional_checkout_field">';
  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'   => __('Ej: 12345678X'), // Texto de apoyo que se muestra dentro del campo
  ), $checkout->get_value( 'nif' ));    // Identificador del campo 
  echo '</div>'; 
}
add_action( 'woocommerce_after_checkout_billing_form', 'woo_custom_field_checkout' );
/*
* INCLUYE NIF/CIF EN LOS 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' );
/*
* MUESTRA EL VALOR DEL CAMPO NIF/CIF LA PÁGINA DE MODIFICACIÓN DEL PEDIDO
*/
function woo_custom_field_checkout_edit_order($order){
  echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );
/*
* INCLUYE EL CAMPO NIF/CIF EN EL CORREO ELECTRÓNICO DE AVISO A TU CLIENTE
*/
function woo_custom_field_checkout_email($keys) {
  $keys[] = 'NIF';
  return $keys;
}
add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');

Como verás, el código incluye todo lo necesario:

  1. Que el campo NIF/CIF/NIE aparezca en la página de pago
  2. Hace que el campo sea obligatorio (lo puedes cambiar) y lo comprueba
  3. Muestra un texto de ejemplo (placeholder)
  4. Que el campo NIF/CIF/NIE se muestre y pueda cambiarse en la página de modificación de pedido
  5. Que el campo NIF/CIF/NIE se muestre en el correo electrónico de confirmación del pedido que WooCommerce envía al cliente

Añadir campo de CIF/NIF/NIE con plugin

Ahora bien, si prefieres usar un plugin te recomiendo WooCommerce Checkout Manager.

Una vez instalado y activo añade un menú propio llamado WooCheckout desde el que puedes decidir qué campos aparecerán en la página de pago, e incluso añadir nuevos, tanto al finalizar compra como si quieres que también aparezcan en el pedido, lo que tiene toda la lógica.

Solo tienes que ir a la pestaña BillingAgregar un nuevo campo.

nuevo-campo-nif-cif-woocommerce-con-plugin

Es importante que conozcas las siguientes opciones de esta pantalla:

  • Required: Si marcas la casilla lo haces obligagtorio
  • Position: Puedes elegir si va a ocupar todo el ancho de la zona de datos de pago (wide) o si compartirá fila con otro campo, para lo que deberías decidir si va a la izquierda (left) o a la derecha (right)
  • Clear: Si marcas la casilla el campo aparece vacío, en caso contrario se muestra el marcador de posición (placeholder)
  • Etiqueta: El texto visible en la página de pago
  • Marcador de posición (placeholder): Si no activaste la casilla Clear se mostrará un texto de ejemplo, que pongas aquí.
  • Elija el tipo de: Tipo de campo
  • Abreviatura: El identificador único del campo
  • X: Este campo tan poco descriptivo es muy importante pues si marcas la casilla creas el campo pero no se verá en la página de pago; sirve fundamentalmente para la otra gran utilidad de este plugin, que es ocultar campos por defecto de WooCommerce.

Si quieres, también puede añadirse a las notas de envío, en la sección Shipping.

nuevo-campo-nif-cif-woocommerce-en-los-envios-con-plugin

Y los campos a decidir son los mismos que para la página de pago.


Nada más. Hace poco me preguntaba un alumno de los cursos de WordPress si no se podía añadir un cálculo o comprobador automático de la letra del CIF, y puedes hacerlo con algo de PHP.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(1 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

29 comentarios en “Cómo añadir el CIF/NIF/NIE en WooCommerce”

      1. No entiendo por qué te parece una barbaridad Fernando. El NIF es un dato importante que debe seguir un formato específico, y normalmente se pide para un fin concreto que requiere un NIF válido. Como por ejemplo usarlo para generar una factura, sin el NIF no es válido la factura tampoco.

        Por tanto a mí no sólo me parece normal querer validarlo, sino que es algo que se debe hacer obligatoriamente para evitar que el usuario cometa errores al introducirlo al igual que se hace con otro tipo de datos. Además no cuesta nada hacerlo usando el filtro woocommerce_checkout_process

    1. Puedes usar cualquier función de PHP destinada a ese fin junto con woocommerce_checkout_process, si buscas en Google seguro que encontrarás varios ejemplos de cómo validar campos personalizados en WooCommerce usando este hook.

  1. Era justo lo que necesitaba!!! Muchas gracias Fernando

    El único cambio que he hecho es cambiar el hook de ‘woocommerce_after_checkout_billing_form’ por ‘woocommerce_before_checkout_billing_form’ ya que quería que el CIF/DNI apareciese como primer campo para rellenar en el checkout.

    1. Muchas gracias Fernando por el gran artículo! y muchas gracias Laura, he hecho lo mismo que tú ya que creo que es un orden más lógico para profesionales pero quería preguntarte ¿Cómo puedo colocarlo debajo del Nombre de Empresa?
      Gracias de antemano!

  2. Dickinson Tracy

    Hola. Muy bueno el post. Quisiera saber si con este plugin se puede agregar un campo de adjuntar archivos (.jpg, .gif, .bmp, .pdf,. psd…) como se hace con contact form 7 o ninja forms. Gracias!!

  3. Covalenciawebs

    Buenas,
    Una explicación muy clara de como añadir el NIF. Se agradece.

    No he encontrado en este post ni en otros sobre el mismo tema cómo editar este campo desde la parte de admin. Yo lo he hecho a mano desde el functions.php
    Cuando entras en el detalle del pedido, puedes editar los campos de facturación y envío, pero no los personalizados. He activado el panel de campos personalizados pero no me aparece en el listado de campos.

    ¿Hay algún modo de editarlo?

    Muchas gracias.

  4. Rafael Alonso

    ¿Y rescatar el ID que genera para luego incluirlo en la factura? Sabes como hacerlo, lo he intentado modificando el PHP que genera el pligun de facturación, en este caso el plugin que tengo instalado es WooCommerce PDF Invoices & Packing Slips que me funciona perfectamente, pero no rescata en este caso el ID creado con checkout. Gracias de antemano

  5. Muchas gracias Fernando por la fantástica ayuda!

    ¿Es posible que el campo del NIF sea obligatorio solo para determinados usuarios?
    En mi tienda tengo clientes normales y profesionales y los profesionales siempre comprarán con factura y por consiguiente necesito el NIF.
    Gracias de antemano!

      1. Parece muy interesante. Les he escrito porque parece ser que el complemento aún no permite hacer obligatorio un campo para determinados usuarios, están pendiente de actualizarlo.
        Muchas gracias y te informaré si se soluciona!

  6. Hola Fernando, muchas gracias por este gran articulo, he puesto el código en functions, y me funciona casi todo, te explico, en el código AÑADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO le tengo puesto el valor true para que el nif sea obligatorio pero no lo es, he probado a introducir los datos sin el nif y puedo finalizar el pedido.
    ¿sabes a que se puede deber?
    Gracias.

  7. Si quiero modificar el NIF por que el cliente lo ha escrito mal ¿en que tabla están los datos del NIF y los podría modificar?
    Feliz Año

  8. Gracias por tu ayuda, Fernando.
    He añadido el campo CIF/NIF/NIE con código y ahora quiero incluirlo en la factura. Uso la herramienta de Booster «PDF Invoicing» ¿Puedes decirme cómo incluir el campo en la factura? Gracias.

      1. MARIA JOSE DÍAZ

        Gracias por tu respuesta. ¿Cómo se puede generar una factura para que incluya el CIF que hemos configurado con el código? Puedo valorar otras opciones distintas a la herramienta de Booster «PDF Invoicing»

  9. Hola!
    Parece que hay una falta de verificación

    // Verificación del campo al enviar el pedido (requerido)
    add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
    function my_custom_checkout_field_process() {
    // Compruebe si el campo está vacío, si no, añadir un error.
    if ( ! $_POST['nif'] )
    wc_add_notice( __( 'Por favor, introduzca un CIF/DNI/NIE' ), 'error' );
    }

  10. Tomas Moya Rodriguez

    Hola Fernando,

    sería la repanocha que también se pudiera añadir/editar desde los datos en la cuenta del cliente. Por ejemplo, si el cliente quiere registrar todos sus datos incluido DNI desde su cuenta previa a realización del la compra.

    Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido