Insertar un campo en la página de pago de WooCommerce

Una de las cosas que más se echan de menos en la instalación básica de WooCommerce es la posibilidad de personalizar el formulario de la página de pago de nuestra tienda online. El formulario que trae WooCommerce por defecto incluye campos con la información mínima necesaria para poder enviar correctamente el pedido al cliente. Sin embargo, si quieres información extra del cliente, como por ejemplo, el número NIF (necesario en España para generar facturas), no te queda más remedio que añadir un nuevo campo al formulario. En esta entrada voy a explicarte 2 métodos diferentes con los que insertar un campo en la página de pago de WooCommerce.

Ambas opciones voy a explicarlas usando un ejemplo en el que voy a añadir el campo NIF al formulario. Ni que decir tiene que lo que te voy a explicar se puede aplicar a cualquier tipo de campo que desees añadir y que te ayude a recabar información extra del cliente, como por ejemplo, su fecha de cumpleaños.

Opción 1. Añadir campos personalizados en WooCommerce con un plugin.

Una forma muy sencilla de agregar tus propios campos personalizados a la página de pago de WooCommerce es usando el plugin gratuito «WooCommerce Checkout Manager«. Si no has trabajado antes con los códigos snippet de WooCommerce, entonces este método es el más indicado para ti. No necesitas tener ningún tipo de conocimiento técnico de WooCommerce, basta con que sepas instalar plugins de WordPress. A continuación te explico paso a paso cómo usar este sencillo plugin para añadir el campo NIF a tu formulario de pago.

  1. Instala y activa el plugin. Para ello entra «Plugins > Añadir nuevo«, escribe en el buscador «woocommerce checkout manager» y haz clic en «Instalar ahora» en el primer resultado de la búsqueda. Cuando haya finalizado la instalación, haz clic en «Activar plugin«.
  2. Para acceder al panel de administración del plugin entra en «Ajustes > WooCommerce Pedido Director«. Si, lo sé, la traducción del nombre deja mucho que desear jeje.
  3. Una vez dentro del panel de administración, abajo en el apartado «Añadir Nueva Sección Campo» haz clic en «Agregar nuevo campo» y completa los huecos con la información necesaria. En este caso voy a mostrar un ejemplo de cómo añadir el campo NIF a nuestro página de pago.
    • Etiqueta: NIF
    • Marcador de posición: Ej: 99999999D
    • Elija tipo de: Text input
    • Abreviatura: nif
    • Atributo obligatorio: sin marcar (el NIF sólo es necesario para los clientes que deseen factura, así que no tiene sentido ponerlo como obligatorio)

    Los campos «Opción A» y «Opción B» puedes dejarlos por defecto, ya que sólo se muestran si usamos una lista de opciones. Para el caso del NIF usamos un campo de tipo texto

  4. Por último, haz clic en «Guardar cambios» y vuelve a cargar la página de pago para ver si se ha añadido el nuevo campo correctamente. Debería aparecer algo así: Nuevo campo NIF página pago WooCommerce

El plugin te permite también añadir campos de tipo checkbox, lista de opciones o incluso un calendario para seleccionar fechas. Además puedes editar las etiquetas de los campos por defecto que trae el formulario de WooCommerce o eliminarlos si no necesitas tantos datos del cliente.

Como desventaja, creo que está un poco limitado en cuanto a personalización de los campos, por ejemplo, no puedes elegir el lugar donde insertarlos en el formulario, siempre se insertan al final. Tampoco puedes añadirles etiquetas HTML, ni insertar campos de tipo área de texto o de contraseña. Otra cosa que no me convence es que antes de los campos personalizados te añade un título con el texto «información adicional» (ni siquiera muestra la primera letra en mayúscula) seguido de una línea horizontal, y esto no se puede eliminar. Para poder eliminarlo y tener acceso a más opciones, necesitas comprar la versión premium del plugin.

Opción 2. Añadir campos personalizados en WooCommerce usando funciones hook.

Esta opción es algo más complicada que la anterior, ya que por lo menos deberías tener alguna experiencia previa usando funciones hook. No te asustes, eso no quiere decir que tengas que saber programar ni nada por el estilo, simplemente necesitas saber donde insertar los códigos snippets y cómo editar algunas líneas en función del tipo de campo que vayas a añadir.

Todos los códigos que te voy a mostrar a partir de ahora debes de copiarlos y pegarlos al final del archivo «function.php» de la plantilla que estés usando en tu tienda online. Puedes encontrar este archivo en «Apariencia > Editor > Funciones del tema«. Cuando hayas pegado los códigos no olvides hacer clic en «Actualizar archivo«.

Al igual que en el ejemplo anterior, voy a mostrar el código necesario para añadir el campo NIF al formulario, pero puedes usarlo para añadir cualquier tipo de campo simplemente editando las líneas que te explicaré más abajo.

Con este código añades un campo de tipo texto para el NIF después del apartado «Notas del pedido» que se encuentra al final del formulario. Insertar campo personalizado en WooCommerce Si quieres cambiar el tipo de campo, puedes hacerlo cambiando el valor de la propiedad «type«. Estos son los posibles valores que puede tener:

  • text‘. Campo de tipo texto
  • text-area‘. Área de texto
  • password‘. Campo para contraseñas. Se muestra un asterisco por cada carácter que se introduce.
  • select‘. Lista de opciones.

Con el atributo «label» defines el nombre que quieres mostrar en el campo.

Guardar los datos del campo personalizado en WooCommerce.

El código anterior sólo muestra el campo NIF en el formulario para que el cliente pueda introducir sus datos, pero no almacena el número NIF en ningún lado. El siguiente código almacena el número NIF introducido por el clientes junto con los demás datos del formulario.

Mostrar el valor del nuevo campo en la página de edición del pedido de WooCommerce.

Una vez hemos almacenado los datos del cliente incluido el nuevo campo NIF, ya podríamos dar el trabajo por finalizado. Sin embargo, aunque el dato introducido en el nuevo campo está guardado en la base de datos de WooCommerce, no podemos visualizarlo desde la página de edición del pedido. Para que WooCommerce muestre en la página de edición del pedido el nuevo campo que hemos creado, necesitamos añadir este código.

El resultado sería algo así: Mostrar campo NIF en la página de edición del pedido en WooCommerce

Incluir el nuevo campo personalizado de WooCommerce en el email de notificación.

Como bien sabrás, cuando un cliente realiza un pedido, se le envía de forma automática un email con todos sus datos y el resumen del pedido. Pues bien, para que ese email también incluya el dato del nuevo campo NIF, debemos de usar el siguiente código.

Como ves, esta segunda opción requiere algo más de soltura técnica con WooCommerce y WordPress, pero una vez tienes claro donde insertar los códigos, el proceso es rápido.

Con este método tienes la ventaja de que el campo o los campos que insertes son totalmente personalizables. Además evitas tener que añadir un plugin más a tu web con el ahorro en rendimiento que eso supone, más aún si lo vas a instalar para añadir un sólo campo al formulario. En mi opinión, siempre que puedas ahorrarte instalar un plugin, mucho mejor. Esto mejorará los tiempos de carga de tu web y tus clientes te lo agradecerán, créeme.

Con este artículo espero haberte aclarado las diferentes opciones que tienes a la hora de insertar un campo en la página de pago de WooCommerce. Ambas son igual de útiles, de ti depende decantarte por una u otra.

151 comentarios en “Insertar un campo en la página de pago de WooCommerce”

  1. Gracias por la información, tengo una tienda online y me gustaría:
    – Se puede poner un desplegable que pregunte donde nos ha conocido para llevar un control de las diferentes campañas de marketing con este plugin?
    – Algún otro que haga esta funcionalidad?
    Ayuda y Gracias 🙂
    Manuel,

  2. Hola, muy bueno el tutorial, la verdad funiona y concuerdo que cuantos menos plugin hay es mejor.

    Consulta porque me seria de gran utilidad. Se puede colocar un campo para adjuntar foto?, lo ideal que la foto quede guardada en la carpeta de carga de wordpress y que a mi me aparezca en el email y en la planilla del pedido y mas ideal seria que eso quede permanentemente para todos los pedidos del usuario hasta que el mismo quiera cambiarla. Saludo

  3. Hola mi estimado Antonio, muy agradecido con tu solución…. La verdad no he tenido tiempo de leer los comentarios, y no sé si alguien lo ha dicho ya, pero como solución a no poder eliminar el título «información adicional» yo diría que se puede usar un plugin como Loco Translate para cambiar el texto… Obvio no lo elimina pero al menos mejoras el aspecto jaja… Un saludo amigo, cuídate y sigue haciendo contenidos de calidad, tienes nuevo seguidor!

  4. Hola Antonio!
    Muchas gracias por todo lo que aportas! Que crack!
    Te comento, en el pago quiero que el cliente ponga directamente la cantidad que desee, como si de un anticipo se tratase, o una donación, no sé como integrar esto en woocomerce. Un ejemplo: https://www.segestion.com/es/segestion-pagar-deuda

    ¿Cómo es posible hacer algo así con redsys?

    Gracias!!

    1. Hola Francisco!

      Puedes probar con el plugin YITH Donation for WooCommerce.

      En realidad cualquier plugin de este tipo debería ser compatible con Redsys, siempre y cuando no se le haga un 2º cargo posterior (por ejemplo, 1 semana o 1 mes después) en la tarjeta.

      Saludos!

  5. Buenas, saludos.

    Una consulta, cómo se llama la tabla y el campo del a BD donde guardas el NIT? Se puede seleccionar una tabla y un campo en particular?

  6. Buenas, he leido tu post. Me gusta la parte de los hook. Ahora, yo quiero agregar nuevos campos a la pagina Mi Cuenta, especificamente al momento de realizar el registro de un nuevo usuario. Woocommerce por defecto solicita unicamente el correo y la contraseña. Yo quiero que aparte de eso, solicite el nombre y edad como datos obligatorios, el telefono y direccion que sean opcionales y finalmente quiero que tenga la opcion de volver a escribir la contraseña para validar que sea correcta la contraseña que quiere colocar para su registro.

    Tienes idea de como puedo hacer esto con los hook? O si hay algún plugin que me ayude con esto? Gracias.

  7. Hola, lo primero gracias por este Post es de mucha ayuda.
    siguiendo las indicaciones, he añadido el campo NIF en mi proceso de Checkout.
    o único, quería añadirle una condición que fuera obligatorio sólo para los usuarios de canarias ceuta y melilla.
    Me he estado peleando con el array del billing_state pero no lo consigo.
    Alguna idea?

    1. Hola Carlos!

      Habría que reescribir gran parte del código. No es algo rápido.

      Una pista:

      Tendrías que obtener la provincia seleccionada por el cliente vía AJAX, verificar si es de Canarias, Ceuta o Melilla y si es así, poner el campo NIF como obligatorio.

      Saludos!

  8. Hola!
    Excelente la nota.. excelente la página y el trabajo que haces con ella.
    Entre tantas consultas que debes recibir, espero que la mía no sea molestia.
    Entre tantas páginas que he desarrollado con woocomerce, muchas solicitudes siempre son basadas no en compras si no en presupuestos online.
    Pensando en esta necesidad, hay productos que el presupuesto se basa en productos personalizados. EJ: una fabrica de aberturas, muestra sus productos, pero una ventana o una puerta para poder hacer un presupuesto en base a un modelo se necesita saber el tamaño (ancho y alto que lo desea el cliente).
    He buscado muchas formas para agregar donde se muestra el producto, de que manera puede el cliente final a la hora de «agregar al carrito» un producto, agregar un campo de selección (como la cantidad, o color, etc) donde ponga manualmente el detalle escrito de tamaño, u en casos una observación para ese producto en particular. Es decir que no sea una observación general en el formulario de envío, si no por producto.
    Como puede hacerse esto?
    Desde ya muchas gracias. y nuevamente felicitaciones por todo el trabajo que se observa en tu web.

    1. Hola Paul!

      No exactamente con este snippet. Necesitarías ver si la pasarela de pago permite añadir nuevos campos a través de algún hook y en caso de que si te lo permita, entonces desarrollar el snippet que implemente ese nuevo campo en el formulario.

      Saludos!

  9. Hola Antonio, Mil Gracias siempre es muy útil todas tus recomendaciones.
    Me gustaría consultar un tema especifico, me gustaría agregar un formulario personalizado en el campo de notas adicionales pero debe ser un formulario con posibilidad de condicionales el plugin que he usado para hacer este tipo de formularios es Eform y me pregunto si es posible agregar un formulario creado con este plugin, en algún lugar dentro de el proceso de compra.
    O que posibilidad de agregar un paso adicional en este proceso de compra para poder poner este formulario que deseo

  10. Hola, genial el post, pero yo tengo una pregunta, el campo de provincias en mi tienda virtual no se me muestra cuando voy a realizar una compra con un usuario registrado esto es por algo que tengo mal configurado en woocommerce y como puedo solucionarlo?

  11. Hola Antonio, tengo el plugin woocommerce checkout manager instalado, y hasta hace unos días me aparecían los campos personalizados en la pantalla de edición de pedido, pero ahora de repente no me aparecen y en opciones de pantalla, también ha desaparecido la opción de mostrar los campos personalizados.
    ¿Tienes noticia de que la gente de woocommerce haya eliminado esta opción?
    Lo cierto es que me hace falta como agua de Mayo.
    Quería saber esto antes de meterme en harina con todo lo que expones en este post.
    Gracias.

    1. Hola Raúl!

      ¿Has reportado el fallo al soporte del plugin? Tiene toda la pinta de ser una incompatibilidad con la versión de WooCommerce que tienes instalada o con otro plugin que afecte a los datos de los pedidos o el formulario de pago.

      Mi consejo es siempre el mismo; contacta con el soporte oficial, porque ellos mejor que nadie, sabrán decirte dónde está el problema.

      Saludos!

      1. Lo hice, al final es problema de oro plugin para woocommerce, la suerte es que eres de pago también, y la suerte para el resto de la gente que lo compró es que fui el primero en reportar el fallo.
        Lo cierto es que el soporte, excelente, publicaron actualización a la media hora de reportar el fallo.
        Gracias por la ayuda que prestas en tu blog
        Saludos

  12. Hola, quisiera hacerle una consulta y por favor espero que puedan contestarme. Como hago para modificar la pestaña «Valoracion», he podido modificar esa palabra, y modifique esa pestaña con el nombre de «Preguntar». Pero al abrir la caja de comentarios dice «Tu valoracion» o «Se el primero es valorar»… como hago para modificar esas palabras, porque quiero modificarlo con ponerle «Realiza tu pregunta», o donde dice «Tu valoracion*» cambiarlo por «Tu pregunta*».
    Espero me puedan decir como hago para modificarlo o me puedan pasar un snippets.
    Saludos espero puedan responderme.

    1. Hola Mati!

      Para eso puedes usar el plugin Loco Translate. Te permite personalizar las traducciones de los textos por defecto de WooCommerce de forma muy sencilla.

      Saludos!

  13. Hola , buen dia. Quisiera preguntarte si hay manera de que un campo del formulario del checkout se puede limitar a que solo acepte letras, ñ y acentos?

  14. hola buenos dias como podria hacer para cuando se cambie la cantidad que se quiere comprar en la tienda con woocommerce, en la columna «Total» cambien el monto de una vez sin darle al botton de actualizar carrito?

  15. Antonio no tienes idea de cómo me ha servido este tutorial, estaba vuelto loco sin encontrar solución y al seguir tus instrucciones TODO salió genial! Muchas gracias!

    Sólo tengo una duda, cómo puedo hacer en el código para que en el email de notificación de compra que me llega, no aparezca NIF, sino otra frase «Información de vuelo»
    ya conseguí cambiar en el frontend, también en el backend, pero no logro hacer cambiar el e-mail. GRACIAS!!!!

  16. Saludos amigo Antonio, me gustaria saber si este codigo funciona para WordPress 4.8, adicionalmente me gustaria tener el campo personalizado NIF Antes o Despues del Nombre y Apellido, adicionalmente quisiera sea editable en el FrontEND del cliente directamente, ya vi que aparece en la facturacion, en el correo del pedido, muchas gracias por tu respuesta y Felicitaciones por el sitio, de gran ayuda…

    1. Hola Jean,

      Este código es muy básico y no te permite todo lo que buscas.

      Sin embargo, puedes conseguir un snippet con todo lo que necesitas para el NIF y 50 códigos más con todo tipo de funciones para tu tienda desde mi nueva sección premium WooCommerce Hacks. Tienes toda la info aquí.

      Un saludo!

      1. Hola…Muy bueno el contenido tengo una consulta los campos agregados en checkout por code Snippet en que tabla de base de datos en mysql se guarda espero su ayuda gracias…!!

  17. Hola Antonio, en primer lugar gran artículo como muchos otros que me han ayudado mucho.

    Por otro lado… en mi caso tengo que hacer dos modificaciones para que los administradores y gestores de tienda vean 2 datos desde el resumen de pedidos, te explico:
    1. Al registrarse en usuario introduce como campo obligatorio el número de teléfono. Y lo que queremos es que aparezca en la tabla de pedidos desde el admin.
    2. Nos gustaría que apareciera también la hora a la que se realizó el pedido en esta tabla de pedidos, no se si es posible.

    ¿Puedes ayudarme?
    Gracias!

    1. Hola Alia,

      Poderse, se puede hacer. Pero ahora mismo no conozco ningún plugin que incluya esa funcionalidad, no quiere decir que no exista, simplemente que no lo conozco.

      Esto me hace pensar que casi seguro la forma de hacerlo pasa por desarrollar un plugin a medida. Y la verdad, no sé si te merece la pena la inversión, eso ya depende de ti.

      Siento no poder ayudarte con eso.

      Un saludo y suerte!

  18. Claudio Sepúlveda

    Hola Antonio, seguí los pasos que mencionas y funcionó a la perfección, ahora sólo necesito hacer que ese campo se posicione después del campo «Nombre de la empresa» ya que el campo creado se llama «RUT empresa». Si me pudieras ayudar con eso te lo agradecería un montón.

  19. Hola Antonio, he escogido la opción del plugin Woocheckout, pero a la hora de generar la factura en PDF no sale el NIF del cliente. En los detalles del pedido SI, pero cuando se genera el PDF NO, ¿que puede pasar?
    Gracias

  20. Hola Antonio,

    Cómo puedo hacer para integrar un método de pago en woocommerce? el cual no tiene plugin y solo tengo el código html del método de pago y la dirección del botón de pago.

    Gracias de antemano.

  21. Envío de nuevo el código, le quité algunos símbolos de menor y mayor porque no lo muestra correctamente…
    tbody
    tr class="cart_item"
    td class="product-name"
    Plato de prueba  × 1 /td
    td class="product-total"
    span class="amount">10,00 Bs/td
    /tr></tbody

  22. Hola Antonio;

    Felicitaciones por tu valiosa información. Una pregunta, cómo hago para obtener el valor de un producto en Woocommerce?
    Porque lo imprimo en pantalla por product-name y me retorna 0. Te envío lo que puedo ver por el código fuente:

    Plato de prueba  × 1

    10,00 Bs

    De antemano muchas gracias por la ayuda.

  23. Buenas Antonio, magnífico currelo que te pegas con la web. Todos los códigos van perfectos, lo que si me he dado cuenta es que no se guarda el dato de nif en la base de datos para que luego se muestre en la ficha (cuenta) del cliente junto al resto de sus datos. Sería esto posible?

    Muuuchas gracias.

  24. Hola Antonio! Excelente tu Blog

    Cometí un error moviendo el código que nos diste. Lo cual me arroja el siguiente error:

    Parse error: syntax error, unexpected ‘id’ (T_STRING), expecting ‘,’ or ‘;’ in /home/bf2one/public_html/wp-content/themes/athena/functions.php on line 147

    Cabe mencionar que el campo NIF ya aparecía a la perfección antes de hacer el movimiento del código.

    Esto fue lo que hice:

    Moví esta parte del primer código ' . __('Información adicional') . '';

    y lo coloque debajo de esta aprte

    woocommerce_form_field( 'id', array(
    'type' => 'text',
    'class' => array('my-field-class form-row-wide'),
    'label' => __('Id'),
    'required' => true,
    'placeholder' => __('Escriba el número de su id'),
    ), $checkout->get_value( 'id' ));

    Aquí lo coloque —->

    Cabe mencionar que no respalde el sitio no hice copia de seguridad. Pero deseo saber si existe la posibilidad de entrando al Cpanel corregir el movimiento que le hice al código? o tendré ya no hay nada que hacer por reparar la plasta que hice?

    1. Hola Antonio!

      Agradezco de antemano tu respuesta… pero ya encontré el archivo en el Cpanel y lo corregí y ya esta todo restablecido.

      Saludos

      1. Ahora mi pregunta seria como puedo hacer para el texto «Información adicional» aparezca por debajo del campo de texto donde se coloca el NIF ?

    2. Hola Bernardo,

      Deberías eliminar todos los códigos que pegaste y volver a insertarlos de nuevo.

      Si no puedes acceder al panel de admin de WordPress, puedes hacerlo desde el Cpanel con el gestor de archivos o a través de FTP.

      Saludos!

  25. Buenos días Antonio,

    tengo un pequeño problema, todo funciona correctamente pero en el email que recibo del nuevo pedido los datos de facturación aparecen mal formateados. Te pongo un ejemplo de como aparecen los de facturación:

    Dirección de facturación
    JORGE GUTIERREZ LOPEZnn24765081VnCALLE RABADAS 8, 3ºKnn23007 JAENnn608459661

    Tanto el tema como los plugins están actualizados, y esto ocurre desde que inserté el nuevo codigo para incluir el NIF. Sabes como se puede solucionar?

    Un saludo y muchas gracias

  26. !Hola Antonio¡
    Ya tengo un código que me permite añadir el campo NIF. Ahora bien, quiero crear un área de texto más y ya no me deja.
    Lo he intentado copiando esto:

    /**
    * Añade el campo NIF a la página de checkout de WooCommerce
    */
    add_action( 'woocommerce_after_order_notes', 'agrega_mi_campo_personalizado' );

    function agrega_mi_campo_personalizado( $checkout ) {

    echo '' . __('Información adicional') . '';

    woocommerce_form_field( 'nif', array(
    'type' => 'text',
    'class' => array('my-field-class form-row-wide'),
    'label' => __('NIF-DNI'),
    'required' => true,
    'placeholder' => __('Introduzca el Nº NIF-DNI'),
    ), $checkout->get_value( 'nif' ));

    echo '';

    }

    y cambiando el nombre ‘nif’ por ‘nombre’ y cambiando ‘text’ por textarea, pero la web deja de funcionar

    Tu fórmula no me funciona. ¿Cómo puedo añadir dos o más áreas de texto en el formulario de pago?

    Muchas gracias! 🙂

    1. Hola Beatriz,

      No basta con hacer eso para que se muestre el campo. Además, necesitarías incluir otras funciones para almacenar la info de ese campo en la base de datos y después poder verla desde el panel gestión de pedidos.

      Si no tienes conocimientos de código y necesitas añadir más campos, te recomiendo que uses un plugin como «WooCommerce Checkout Manager», en lugar de usar los códigos.

      Un saludo!

  27. Hola a todos he montado una tienda online y he visto la forma de implementar el código del dni que creo que es una solución a medias porque cada vez que actualicemos el wordpress hay que volver a aplicarlo y entonces se me encendió la bombilla porque no usar un campo ya creado de woocommerce? y cogí el campo dirección pero el de abajo, usando el plugin de personalizar campos de woocomerce, le puse de titulo dni, y donde debería ir la segunda parte de la dirección lo vacié y le puse Valido para la factura, con eso que conseguimos que salga en la factura de woocommerce y en todos los sitios sin códigos ni nada. Envíe al solución al admin de woodemia para revision porque no me dejaba por aquí , pero como ya me deja comentar os lo pongo espero os sea de ayuda.

    1. Hola,

      Gracias por el aporte, aunque en realidad el código no se pierde en las actualizaciones si lo insertas de la forma correcta. Es decir, usando un tema hijo o el plugin Code Snippet.

      Saludos!

  28. Buenas tardes Antonio,actualmente tengo un campamento de verano donde quiero poder meter la inscripcion en la tienda y que así puedan reservar la plaza online. Hasta ahora he utilizado ECWID que me da la opcion de añadir campos a la hora de pinchar en el producto. Es decir, hago click en el productor y me aprece el formulario para rellenar y una vez completado,puedo ir a pagar.

    Sería posible hacer esto pero con Woocomerce? Perdona mi ignorancia pero no entiendo mucho de programación y no he encontrado forma alguna de poder hacerlo por ninguna parte 🙁

    Muchas gracias de antemano.

    1. Hola Jorge,

      Hay varios plugins que te permiten hacer eso.

      Yo he trabajado con el plugin Gravity Forms + WooCommerce add-on, pero es de pago y no es precisamente barato.

      Otra opción es el plugin gratuito «WooCommerce Extra Field». Es mucho más limitado que el que he mencionado antes, pero puede servirte.

      Y después también tienes el plugin oficial «Product Add-ons» con muchas más opciones también.

      Espero que te sirva.

      Saludos!

  29. Hola Antonio, excelente. ¡Gracias!
    Una pregunta, ¿cómo puedo insertar una casilla de verificación en la página de checkout para que se suscriba al newsletter?

  30. hola, muchas gracias por el tutorial, que me ha servido para añadir un campo de fecha de nacimiento en el momento del checkout (que también sirve para crear la cuenta de usuario).
    El problema es que cuando el usuario compra otra vez, dicho campo personalizado aparece vacío y no sé como recuperar la información guardada y mostrarla en dicho campo de texto.
    Podríais hecharme un cable? gracias. lo estoy intentando hacer así:

    código
  31. Cuando entramos a la web no queremos que hagas lo que te salga, y nos mandes al final de los comentarios cuando todavía ni hemos leído el articulo. ¿Así es como aconsejas fidelizar a los clientes?

  32. hola…
    Ante todo gracias por atenderme…gran trabajo el tuyo…tengo un pequeño proyecto de comercio electronico…y me encuentro en la siguiente situacion.
    El formulario de pedido tiene la opcion de registro o no…si alguien quiere comprar sin estar registrado…lo hace…pero si se equivoca en un campo…aparece un error …de falta de campo. El problema viene cuando le doy a Paypal..se queda congelado…y me obliga a hacer un refresco de la pagina y a volver a rellenar todos los campos… no se si me explico bien?
    Gracias por tus aportes….Iñigo

  33. Hola,

    He hecho unos cambios en el código que creo interesantes, os los comparto.

    1) Si el usuario ya tiene cuenta, el NIF aparece de forma automática en la página de pago. Según el código original aparecía siempre en blanco.

    2) Al crear un pedido manual el NIF no se añade al pedido y la forma posible sería creando el custom field. Con esta modificación, si el valor del NIF no existe se añade.

    Nota: al campo lo he llamado ‘vat_number’ en vez de ‘NIF’, simplemente porque antes usaba un plugin que usaba ese campo y así no tengo que editar la base de datos.

    Saludos

    /* Añade el campo NIF a la página de checkout de WooCommerce
    ============================================================================ */

    add_action( ‘woocommerce_after_order_notes’, ‘agrega_mi_campo_personalizado’ );

    function agrega_mi_campo_personalizado( $checkout ) {

    if ( $current_user = wp_get_current_user() ) $user_id = $current_user->ID; // obtenemos usuario actual
    else $user_id = 0;

    echo » . __(‘Información fiscal’, ‘my-theme’) . »;

    woocommerce_form_field( ‘vat_number’, array(
    ‘type’ => ‘text’,
    ‘class’ => array(‘form-row-first’),
    ‘label’ => __(‘NIF’, ‘my-theme’),
    ‘required’ => true,
    ‘placeholder’ => __(‘Ej: 36123456A’, ‘my-theme’),
    ‘description’ => __(‘Escribe un NIF válido, sin puntos ni guiones.’, ‘my-theme’),
    ‘default’ => get_user_meta($user_id, ‘vat_number’, true),
    ), $checkout->get_value( ‘vat_number’ ));

    echo »;

    }

    /**
    * Valida el nuevo campo
    */

    add_action(‘woocommerce_checkout_process’, ‘valida_mi_campo_personalizado’);

    function valida_mi_campo_personalizado() {
    if ( ! $_POST[‘vat_number’] )
    wc_add_notice( ‘‘ . __( ‘VAT ID’, ‘my-theme’ ) . ‘ ‘ . __( ‘is a required field.’, ‘woocommerce’ ), ‘error’ );
    }

    /**
    * Actualiza la información del pedido con el nuevo campo
    */

    add_action( ‘woocommerce_checkout_update_order_meta’, ‘actualizar_info_pedido_con_nuevo_campo’ );

    function actualizar_info_pedido_con_nuevo_campo( $order_id ) {
    if ( ! empty( $_POST[‘vat_number’] ) ) {
    update_post_meta( $order_id, ‘vat_number’, sanitize_text_field( $_POST[‘vat_number’] ) );
    }
    }

    /**
    * Muestra el valor del nuevo campo NIF en la página de edición del pedido
    */

    add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘mostrar_campo_personalizado_en_admin_pedido’, 10, 1 );

    function mostrar_campo_personalizado_en_admin_pedido($order) {

    $nif = get_post_meta( $order->id, ‘vat_number’, true );

    if ( empty($nif) ) { // si el NIF no está almacenado en el pedido lo obtenemos de cliente y lo añadimos
    $user_id = get_post_meta( $order->id, ‘_customer_user’, true );
    $nif = get_user_meta($user_id, ‘vat_number’, true);
    update_post_meta( $order->id, ‘vat_number’, sanitize_text_field( $nif ) );
    }

    echo ‘‘.__(‘NIF’, ‘my-theme’).’: ‘ . $nif . »;
    }

    /**
    * Incluye el campo NIF en el email de notificación del cliente
    */

    add_filter(‘woocommerce_email_order_meta_keys’, ‘muestra_campo_personalizado_email’);

    function muestra_campo_personalizado_email( $keys ) {

    $keys[‘NIF’] = ‘vat_number’;
    return $keys;
    }

      1. He hecho una mejora a raíz de un caso que me ha surgido, os cuento.
        El cliente hizo el pedido por teléfono y le creé el pedido desde el WP-Admin, pero cuando le iba a hacer la factura me pidió que se la hiciese con otros datos.
        Con el script que compartí el otro día, el sistema ve que hay un NIF almacenado en el pedido y al cambiar de cliente ese NIF se mantiene. Habría que mostrar campos personalizados y cambiarlo a mano.
        Con este pequeño cambio compruebo que el NIF almacenado en pedido es el mismo que el NIF almacenado en los datos de cliente, si no coinciden actualizo de forma automática.
        Así que el código queda así:

        /**
        * Muestra el valor del nuevo campo NIF en la página de edición del pedido
        */

        add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘mostrar_campo_personalizado_en_admin_pedido’, 10, 1 );

        function mostrar_campo_personalizado_en_admin_pedido($order) {

        // obtenemos el NIF almacenado en el pedido
        $nif = get_post_meta( $order->id, ‘vat_number’, true );

        // si el NIF no está almacenado en el pedido lo guardamos
        if ( empty($nif) ) {
        $user_id = get_post_meta( $order->id, ‘_customer_user’, true );
        $nif = get_user_meta($user_id, ‘vat_number’, true);
        update_post_meta( $order->id, ‘vat_number’, sanitize_text_field( $nif ) );

        // Comprobamos que el NIF almacenado en el pedido coincide con el del cliente; si no es lo actualizamos.
        } else {
        $user_id = get_post_meta( $order->id, ‘_customer_user’, true );
        $nif_cliente = get_user_meta($user_id, ‘vat_number’, true);
        if ( $nif !== $nif_cliente ) $nif = $nif_cliente;
        update_post_meta( $order->id, ‘vat_number’, sanitize_text_field( $nif ) );
        }

        echo ‘‘.__(‘NIF’, ‘saharan’).’: ‘ . $nif . »;
        }

  34. Hemos copiado y pegado el código que indicas en la opción 2 para añadir el campo NIF a la página de checkout, y nos da error en la primera linea de código.
    Indicarle que hemos localizado el archivo functions.php en la carpeta wp-includes, ya que en la carpeta principal del servidor no había ningún archivo con este nombre.
    Tiene idea en que nos podemos haber equivocado?

    Muchas gracias de antemano.

    1. Hola Chupacabras3D,

      El problema es que has insertado el código en el functions.php de la carpeta wp-include de tu WordPress y el contenido de esa carpeta y la de wp-admin NUNCA se debe modificar, ya que puedes «cargarte» todo el sitio.

      Mi consejo es que deshagas todos los cambios en el functions.php de la carpeta wp-include y una vez restaurada la versión original del archivo, sigue los pasos que explico en el siguiente artículo para añadir códigos directamente desde el panel de WordPress –> Añadir códigos snippet en WooCommerce de forma correcta.

      Saludos!

  35. Muchas gracias por tus explicaciones! Me han servido de mucho!
    Tengo una pregunta, hay alguna manera de que el programa detecte que se han insertado los 9 dígitos del DNI, porque si tan solo escribo 1 dígito, el programa lo da por valido y me permite realizar la compra.
    Muchas gracias

    1. Hola noe,

      El código que muestro en esta entrada no permite hacer eso y tampoco conozco un plugin que lo haga. Habría que desarrollar esa funcionalidad desde cero.

      Siento no poder ayudarte en eso.

      Un saludo!

  36. Hola Antonio!
    En mi anterior comentario explicaba que no me funcionaba el código que nos muestras. He visto además que a otras personas también les pasa.
    Creo haber descubierto la causa del problema, o al menos en mi caso he podido solucionarlo.
    Si tienes activada la opción de pago PayPal Express, ni plugin, ni código PHP, ni campo obligatorio ni nada. El cliente entra su DNI, pero en cuanto es redirigido a la página de pago el dato se pierde, no aparece en el mensaje email, ni en los detalles del pedido, ni en la factura.
    Solución: utilizar el pago Pago PayPal Standard, habilitando este y deshabilitando el Express, en WooCommerce > Ajustes > Finalizar compra.
    Espero haber ayudado.

  37. Hola, Antonio,
    El contenido del sitio es extraordinario. Gracias.
    Siento ser un poco redundante, pero creo que el código, por lo que sea, en la versión actual de WordPress no funciona.
    Se añade el campo correctamente al formulario fe finalización de compra, el cliente lo entra, finaliza y su DNI ya no aparece por ninguna parte, ni en los detalles del pedido, ni en la factura generada por PDF Invoices & Packing Slips.
    Gracias de antemano.

  38. Hola Antonio,

    Felicidades por la web, encuentro muchos recursos y me sirve de gran ayuda. He instalado el plugin y me aparece todo bien pero hay una rallita en medio de la casilla para introducir el nif. A qué se puede deber?

    1. Hola Sonia,

      Pues eso tiene pinta de deberse a tu plantilla, es decir, a cómo aplica tu tema los estilos a los campos de los formularios. Haz la prueba con alguna plantilla por defecto de WordPress para asegurarte de que efectivamente sea ese el motivo.

      Saludos!

  39. Muy buenas,

    Existe algún modo de añadir nuevos campos al usuario tipo customer y que luego otra persona con otro rol los rellene desde panel?

    La idea es que la gente haga un pedido, la primera vez que realicen una compra se pondrán en contacto con el para terminar de rellenar la ficha y la próxima vez que hiciese un pedido ya quedase archivado esa info a nivel de cliente como ocurre con la dirección de facturación.

    Gracias.

    1. Hola Jorge,

      Aunque ya estuvimos hablando sobre este tema en privado ayer, te contesto para que todo el mundo lo pueda ver.

      Se podría hacer sin problema, pero habría que desarrollarlo a medida, ya que ahora mismo no conozco ningún plugin que te permita hacerlo directamente.

      Saludos!

  40. ¿Sería posible que el campo NIF se pudiera colocar debajo de los datos del formulario de datos que rellena el cliente, en lugar de debajo de Notas del pedido? ¿Se podría hacer a través del snipet para no tener que instalar ningún plugin? A los clientes siempre se les olvida porque el campo NIF aparece a la derecha.

    Muchas gracias.

  41. Hola Antonio,

    Un tutorial fantástico! Muy útil y muy bien explicado.

    Lo he seguido pasos a paso y se muestra bien el campo de NIF en el checkout, facturas, email… Lo único, me queda una duda:

    ¿Habría alguna forma para que el campo NIF que también se muestra en la página de edición del pedido fuera modificable como el resto de los campos?

    Después de seguir los pasos del tutorial, si que se muestra el campo pero a diferencia del resto de campos no es modificable.

    En principio no será necesario modificar ese campo, pero quería saber si es posible, por si alguna vez algún cliente se equivocara al introducir el dato.

    Gracias,
    Víctor

      1. Hola Antonio,

        En primer lugar, muchas gracias por la ayuda que prestas!

        He probado con WordPress 4.9.4 el código snippet del link que indicas -> http://bit.ly/1XQ7Vgf

        He cambiado ‘required’ => false, por ‘required’ => true, y he detectado dos problemas que no sé cómo solucionar:

        1. Si el usuario introduce cualquier caracter, lo da por válido.

        ¿Podrías indicar cómo podría validarse, por favor?

        2. Si el usuario deja el campo en blanco aparece el siguiente mensaje: «Facturación NIF es un campo requerido.»

        ¿Podrías indicar cómo debería ser el código para que el mensaje de error fuera «Facturación NIF es un campo requerido.» ?

        Muchas gracias,

        noe

      2. Perdona, Antonio, veo que el editor de tu blog sí que ha interpretado bien el código del mensaje de error que en mi tienda se ve escrito en pantalla. Voy a volver a publicar mi pregunta pero quitanto los tags para que se entienda que el código se ve escrito en pantalla.

        Disculpa!

        noe

      3. Hola Antonio,

        En primer lugar, muchas gracias por la ayuda que prestas!

        He probado con WordPress 4.9.4 el código snippet del link que indicas -> http://bit.ly/1XQ7Vgf

        He cambiado ‘required’ => false, por ‘required’ => true, y he detectado dos problemas que no sé cómo solucionar:

        1. Si el usuario introduce cualquier caracter, lo da por válido.

        ¿Podrías indicar cómo podría validarse, por favor?

        2. Si el usuario deja el campo en blanco aparece el siguiente mensaje, en el que se ven los tags: “Facturación abbr lang=»es» title=»Número de Identificación Fiscal»>DNI/NIF</abbr es un campo requerido.”

        ¿Podrías indicar cómo debería ser el código para que el mensaje de error fuera “Facturación NIF es un campo requerido.” ?

        Muchas gracias,

        noe

  42. Hola Antonio, la verdad es que me has salvado el culo! así que muchísimas gracias!!

    Solo me queda una duda, hay alguna manera de incluirlo en la factura PDF que se genera con el plugin WooCommerce PDF Invoices & Packing Slips

    Muchas gracias de antemano!!

      1. perfecto!! eso mismo necesitaba!!

        una pregunta más, en la nota de entrega se puede añadir también? ya sería la repera!!

        muchísimas gracias!!

  43. Hola Antonio

    Te felicito por tu blog y por tu dedicación. Muchas gracias por anticipado por las horas que dedicas a compartir tus conocimientos.

    Respecto a las facturas, me pregunto si hay alguna forma de generar las facturas de tal manera que tengan desglosada la base imponible y el IVA porque, si no estoy equivocado, es un requisito para que tengan validez legal…

    http://portaljuridico.lexnova.es/practica/JURIDICO/59312/cuales-son-los-requisitos-que-debe-contener-toda-factura-y-sus-copias

    Apartado f: Descripción de las operaciones, consignándose todos los datos necesarios para la determinación de la base imponible del IVA.

    Si no, no le veo utilidad a generar estas «facturas»…

    Muchas gracias por anticipado.

    1. Hola Victor,

      Para que se muestre la base imponible y el IVA desglosado debes crearte una plantilla de factura personalizada que muestre toda esa información.

      Otra opción es conectar tu tienda con la plataforma de facturación de Quaderno, la cual te genera automáticamente las facturas cumpliendo con la normativa española y europea.

      Un saludo!

  44. Hola Antonio,

    en primer lugar felicitaciones no solo por esta información, este blog si no también por toda la página. Me parece muy «userfriendly» y muy estética ;o)

    Me sorprende que con tantos comentarios a cerca de facturas, nadie ha comentado que WooCommerce solamente muestra la cantidad y el total por producto. Para una factura legal se necesita el precio unitario y la correspondiente IVA. Además nuestra empresa tiene la peculiaridad de tener que trabajar con 21% de IVA y con 10% de IVA. En un blog anterior mencionaste cómo configurarlo, pero no se desglosa en la factura (solo pone en el Total, la suma del 21% y del 10% pero no lo indica por producto).

    De verdad que son negligencias significativas … no entiendo por qué existen todavía …

    Te agradecería algún comentario, enlace …

    Un saludo desde Málaga ;o)

    1. Hola Koi,

      Efectivamente, esa opción no la incluye.

      Hay que tener en cuenta que WooCommerce es una solución estándar para crear un ecommerce en cualquier país del mundo y es responsabilidad del usuario configurar su tienda (usando plugins o desarrollos a medida) para cumplir con la legislación de su país.

      En mi caso, uso el plugin de facturas que explico en esta entrada «¿Aún no sabes generar facturas con WooCommerce?» y tiene la ventaja de que te puedes crear tus propias plantillas de factura en las que si puedes desglosar el IVA a nivel de producto.

      Otra opción sería conectar tu tienda con la plataforma de facturación de Quaderno, que cumplen con la normativa española y europea.

      Espero habértelo aclarado.

      Un saludo!

      1. Hola Antonio y Koi

        Después de darle muchas y muchas vueltas —incluso ayer envié un comentario que coincidía casi con el de Koi, que no había visto—, he averiguado la manera en que SÍ se puede hacer.

        Para ello es necesario en Woocommerce > Configuración > Impuestos > Opciones, EXCLUIR los impuestos en la Caja, es decir, la penúltima opción:

        Display prices during cart/checkout: Excluding taxes

        De esta manera saldrá desglosado el subtotal o base imponible, el envío y el IVA también en la factura generada por el plugin.

        Espero que esta información sea de utilidad. Yo tardé un día entero dándole vueltas y haciendo diversas pruebas hasta que di con la manera.

        Te felicito por tu blog y por la dedicación. Gracias por toda la información tan valiosa que compartes.

        Saludos!

        1. Efectivamente Víctor.

          Des esa forma si se desglosa todo (así es como lo configuro yo en mis tiendas), pero yo lo había entendido de otra forma, más bien como explicaba Koi. En ese caso si que no queda más remedio que crear una plantilla de factura personalizada.

          Saludos!

  45. Buenos dias Antonio.

    Te escribo para preguntarte si este plugin sirve para agregar al checkout dos dropdown? o tu sabes de algún plugin que tenga esa opción? es que necesito realizar lo siguiente:

    1. Un dropdown que me muestre los departamentos/Estados del país.
    2. Un dropdown que me muestre las ciudades que corresponden al departamento/Estado anteriormente seleccionado.

    Te agradesco tu pronta respuesta, pues tengo mi empresa sin poder vender por este motivo.

    Muchas gracias.
    Saludos.

    Ing. Carlos Leon.

    1. Hola buenas tardes,

      Yo tambien estoy a la busqueda de algo q haga lo mismo, quisiera saber si le han dado respuesta o ha encontrado el plugin para esto???

      Wilson Angarita

  46. Excelente información, muchas gracias.
    Solo tengo una duda:
    Al mostrar el valor del nuevo campo en la página de edición del pedido de WooCommerce me aparece el dato pero al darle a editar no me aparece este campo como editable. ¿Sabes como solucionar esto?

    Muhas gracias

  47. Hola buenas en esta ultima actualización de woocomerce Versión 2.4.1 veo que descolocado los campos de finalizar la compra el campo NIF de la compra como se puede organizar el orden de cada campo estan desorganizados algo a cambiado el codigo que su codigo para poner el nif solo pasa en frondend cuando realizas el pedido sale mal organizados podria decir como puedo yo organizar desde codigo todo formulario de finalizar compra.

    gracias

  48. Buenos días, quería saber como puedo hacer para insertar un campo dependiente en el checkout.
    Tengo dos campos «select» y dependiendo que opción se seleccione en el primero, tengo que mostrar distintas opciones en el segundo.

    Aguardo su respuesta.

    Saludos
    Federico

  49. Hola Antonio

    Como siempre sigo tu blog para continuar aprendiendo sobre woocommerce. Una pregunta es saber si cuando se va hacer el pago, en el campo zip code se le puede colocar por defecto 0000 u otra opción es que aparezca una reseña que diga que si no aplica este campo colocar 0000.

    Como lo hago??

    Gracias

  50. Hola Antonio,

    Lo primero felicitarte por este grandioso blog, que me ha ayudado desde hace tiempo a hacer mi ecommerce, pero ha llegado el momento que tengo que molestarte, y es que llegados a este punto quisiera comentarte a ver si seria posible, que estos campos saliesen en función de lo que el cliente ha comprado.

    Me explico:

    Mi caso es que yo vendo un pack de una noche con espectaculo, por ejemplo. Y doy la posibilidad de una noche extra. Quisiera saber si en el momento que el cliente compra una noche extra se active el campo de Información adicional de la fecha pero si el cliente no compra la noche adicional que no salga este campo. No se si me he explicado y si seria posible.

    También, tengo dos packs diferentes para atrevidos y no tanto, los atrevidos tendrían que poner a la hora de pago de que parte del espectáculo quieren participar, o cual es su arte particular. Y todo esto que salga en la hoja de pedido.

    Muchas gracias.

  51. Buenas.

    Muchas gracias por el post, aunque tengo una duda. Actualmente esto ya no sirve para las nuevas versiones de woocommerce no?

    Lo he probado pero nada.

  52. Hola Antonio

    Me parece un tema este perfecto para lo que yo quiero pero tengo unos problemillas, con el metodo 1 me lo añade justo debajo del telefono que es lo que quiero, pero no me lo pone en la factura, utilizo en plugin WooCommerce PDF Invoices & Packing Slips, y con el metodo 2 si que me lo lee la factura y me va bien pero me lo coloca debajo de notas del pedido y yo lo querria tener debajo del campo telefono, me puedes hechar una mano a ver como lo puedo hacer?, muchas gracias de antemano.

  53. Hola Antonio, tu blog me parece increíble.

    Me parece que esta opción del código ya no sirve con la nueva actualización de WooCommerce.

    Hay que modificar nuevamente el hook?

    Saludos!

  54. Buenos días.

    No se si alguien me puede decir si existe algún plugin o manera de introducir, de forma cómoda, en la pagina del carrito una caja con ofertas, descuentos, productos…

    Atentamente Gustavo

    1. Hola Enzo,

      Se podría hacer, claro.

      Seguramente la mejor opción para eso sea usar algún plugin de jQuery.

      Pero en cualquier caso habría que añadir el nuevo código a la página de pago.

      Un saludo!

  55. Hola Antonio.
    Gran aportación. Me gustaría consultarte como debería hacer para poder editar ese código NIF en caso de que necesitara modificarlo en caso de que sea erróneo. Os si habría alguna manera de poder editarlo en los datos del usuario,
    Muchas gracias

    1. Hola Carlos,

      Lo siento, pero con estos códigos sólo puedes añadir el nuevo campo en la página de pago y guardar el NIF en los datos del pedido. No te permite editar el campo después.

      Para hacer eso se necesitaría desarrollar otro código adicional.

      Siento no poder ayudarte con eso.

      Un saludo.

  56. Perdón no haber sido totalmente claro con mi comentario anterior. Lo que realmente deseo es Crear un Campo para la dirección pero en el cual pueda sesgar las posibilidades me explico; es determinar que Seleccione (Calle, Carrera, Transversal, Diagonal), después indique el número en dos casillas y por último en una casilla los Datos Adicionales. Anexo el código del resultado que quiero lograr. Gracias por tu colaboración.

    Dirección

    Carrera
    Calle
    Tranversal
    Diagonal

    #

  57. Hola Antonio, primero felicitarte por tu labor desinteresada de ayudar transmitiendo tus conocimientos al mundo eres un fenómeno y estoy aprendiendo a usar WooCommerce contigo.
    He leído que alguien a tenido el problema que no le aparece el NIF por ningún sitio (a mi también me ha pasado) para solucionarlo solo ay que hacer un copia y pega de ese mismo código en el editor de plugins en el archivowoocommerce/woocommerce.php a mi me ha funcionado.
    P.D: espero no cagarla.

    1. Hola Alejandro,

      La solución que propones no es la más adecuada. De hecho, no lo aconsejo para nada.

      Te explico por qué.

      La solución que propones implica modificar el código fuente de WooCommerce (JAMÁS se debe hacer eso en ningún plugin) y eso tiene muchos inconvenientes y riesgos.

      El problema principal de hacer eso es que puedes añadir una línea de código errónea o borrar partes de código sin querer en el código fuente del plugin, esto podría probocar que tanto tu tienda WooCommerce como tu web dejen de funcionar y tengas que hacer una instalación nueva ¡desde cero!

      Aparte de aumentar las probabilidades de fallos de seguridad en tu tienda.

      Otro inconveniente de hacerlo así es que cuando actualices el plugin es muy probable que se elimine el código que has pegado y tengas que volver a copiar y pegar de nuevo.

      Cuando dices que no te aparece el NIF por ningún sitio, ¿te refieres a que ni siquiera se muestra el campo en la página de pago?

      Si es eso, la mayoría de las veces se debe a la caché del navegador. Por lo que te recomiendo borrar la caché cuando hagas modificaciones.

      Pruébalo y me cuentas.

      Un saludo!

  58. Hola, muy bueno el tutorial, me ha ayudado mucho, pero me surge un inconveniente cuando el cliente no añade el nif luego no lo podemos poner o modificar.

    Pero ni siquiera desde base de datos? existiría alguna forma de hacerlo?

    Gracias.

  59. Hola,

    Me gustaria quitar de la pagina productos, lo de prodcutos relacionados con sus imagenes y que solo aparezca el producto principal.
    Tambien me gustaria cambiar el tamaño de los botones de » comprar» «añadir a mi carrito» etc…pero no encuentro el codigo en functions.php. Me puedes ayudar?Muchas gracias

  60. Excelente blog, felicitaciones por tu buen trabajo!

    Una consulta, he buscado esta información en mil lado pero nadie parece saberla. Yo modifiqué los campos del checkout con el plugin de woothemes «Checkout Field Editor» para editar y agregar nuevos campos (similar al que describes acá). El problema es que la información de estos nuevos campos no pasa al registro del usuario (sólo se queda como información adicional del pedido). Mi idea es que esa información pase al registro de usuario para poder sincronizar mis usarios con mailchimp usando el plugin autochimp (y poder hacer segmentación con esas preguntas).

    Sabes como pasar la información adicional en el checkout al registro de usuario en wordpress? No he encontrado esta información en ningún lado, lo único que logre es que hay un plugin llamado Woochimp que sincroniza los usuarios que realizan la compra con mailchimp pero no pasa campos adicionales (aunque estan trabajando en eso en una nueva actualización)

    complejo no? jaja
    Saludos!

    1. Hola Sebastián,

      Como bien dices, es una pregunta algo compleja, es decir, no te puedo dar la solución en un comentario.

      Desde luego si he entendido bien lo que quieres, te puedo asegurar que se puede hacer usando los hooks de WooCommerce y WordPress. Eso si, necesitaría desarrollar el código desde cero -no conozco nada que ya esté implementado- y además hacer las pruebas pertinentes.

      Si es algo que te urge, te recomiendo que contrates algún desarrollador freelance con conocimientos en WordPress que te lo implemente.

      Siento no poder hacer más.

      Saludos!

  61. Excelente tutorial! Un gran trabajo!

    No obstante, al incluir la línea:

    ‘required’ => true,

    para que el campo NIF sea obligatorio si es cierto que lo pide si no lo has metido pero en cuanto aceptas los terminos y condiciones de la página, aunque no lo hayas metido, lo pasa de largo y emite el pedido sin dicho campo.

    ¿Alguna idea de que es lo que puede fallar?

    Gracias y un saludo!

      1. Un mágnifico tutorial, me has ahorrado horas de trabajo.
        Solo una cosita, al meter este último codigo para activar la verificación de NIF la web hace pantallazo en blanco.
        Sabes porque podría ser?

    1. Hola Julio,

      Claro que se puede. Sólo tienes que añadir la siguiente línea de código:

      'required'      => true,

      justo debajo de esta línea

      'label'         => __('NIF'),

      que se encuentra en el primer código snippet del artículo.

      Un saludo!

      1. Hola!!

        Acabo de añadir esa línea y podido completar un pedido sin poner el DNI

        Aunque en la página del checkout aparece ahora un doble asterisco indicando que es obligatorio….

        Que puede haber pasado??

      2. Vale, no hagas caso al comentario anterior, ya he visto como indicas que se soluciona en el siguiente comentario del post

        Excelente trabajo como siempre, muy agradecido 🙂

        Saludos!!

  62. Hola Antonio, gracias por compartir esta información.

    Tengo que decirte que aunque consigo añadir el campo NIF a la pagina de checkout, el resto no me funciona, es decir:

    – No me muestra el NIF en la pagina de edición del pedido.
    – No me incluye el NIF en los emails de notificación.
    – No me incluye el NIF en la factura.

    Utilizo WordPress 4.0, WooCommerce 2.2.8 y PDF Invoices & Packing Slips 1.4.12

    ¿Tienes idea de porqué puede ser?

    Un saludo y gracias.

    1. Hola Pablo,

      Es bastante raro lo que te ocurre.

      Asegúrate de haber pegado los códigos al final del fichero functions.php del tema que estés usando después de la etiqueta .

      Te aseguro que los he probado mil veces y funcionan perfectamente con la última versión de WordPress y WooCommerce.

      Un saludo.

      1. Yo me volví loco con el mismo problema, hasta que descubrí que ocurría cuando se realizaba un pago a través de PayPal Express. Al habilitar PayPal standard y deshabilitar Express, solucioné el problema, no se si este es el caso.

        1. Hola Javier,

          Me alegra que lo hayas resuelto.

          La verdad es que no he usado todavía la opción de Paypal Express, así que no sabría decirte si es el motivo por el que no se guardaba el NIF en la base de datos.

          Lo que si sé es que el código funciona a la perfección con las pasarelas de pago habituales, así que sería cuestión de reportar el fallo al desarrollador del plugin de Paypal Express.

          Saludos!

  63. Hola Antonio

    Me ha encantado tu Web, te he guardado en favoritos y me he suscrito.

    Te he encontrado buscando una solución a un problema que tengo, no se si podrás ayudarme.

    Lo que estoy intentando es añadir otra caja en la pagina de producto (Backend), y que en el frontend aparezca entre las pestañas y los productos relacionados, con la intención de insertar un shorcode de Widget Shorcode y poder cambiar lo que ahí aparezca desde el apartado de widget, de esta manera puedo cambiar en la pagina de todos los productos al mismo tiempo, algún tipo de oferta, o cualquier cosa que nos pueda interesar.

    Gracias de Antemano.

    PD: Yo también soy de Córdoba, pero vivo en Lucena.

    Un Saludo
    Marco Antonio
    http://www.mudeba.com

    1. Hola Marco,

      Me alegra que te guste mi blog, sin duda es el mejor cumplido que me pueden hacer. Gracias.

      Con respecto a lo que preguntas, necesitas hacer un desarrollo a medida o por lo menos yo no conozco ningún plugin que permita hacer eso que dices.

      Si tu pregunta es, si presto servicios de desarrollo a medida. Lo siento, pero por el momento no presto servicios de ese tipo :-/

      Espero que puedas solucionarlo pronto.

      Aun así te agradezco mucho el interés.

      Gracias por seguirme. Y espero verte por aquí a menudo.

      Un saludo!

    1. Hola Jose,

      Efectivamente, no funcionaba porque en el último código había escrito «$keys[] = ‘nif’» en lugar de «$keys[] = ‘NIF’» con mayúscula.

      Y está actualizado.

      Gracias por avisar.

      Un saludo!

  64. Excelente tutoria Antonio, gracias por conpartirlo,

    Solo estava con una pequeña duda, como hacer que los nuevos campos sean adicionado al lado izquierdo, ya que desa forma los campos añadidos estan luego abajo de las «notas del pedido»

    Gracias por tu ayuda

    1. Hola Luis,

      Con este código los nuevos campos se van mostrando justo debajo del campo «Notas del pedido«.

      Si lo que deseas es personalizar el diseño de la página de checkout para que los nuevos campos aparezcan a la izquierda, entonces deberías crearte un tema hijo y con un nuevo fichero con tu propia estructura HTML para la página de pago.

      Sinceramente, no te lo recomiendo, a no ser que tengas experiencia previa desarrollando plantillas para WooCommerce.

      Espero que te haya servido.

      Un saludo!

  65. Estupendo tutorial. Muy bien explicado.

    Una pregunta. Puedo rescatar ese campo personalizado dsde cualquier sitio dnde aparezca el numero de pedido?
    Como en la pagina de mis pedidos o bien en la api en la funcion get_orders??

    Gracias
    Saludos

Deja un comentario

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

Responsable: Antonio Cantero, siendo la Finalidad; envío de mis publicaciones así como correos comerciales. La Legitimación; es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing Active Campaign ubicada en EEUU y acogida al Privacy Shield. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos en contacto@woodemia.com

Scroll al inicio