Índice de contenidos
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.
- 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«.
- 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.
- 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
- 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í:
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. 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í:
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.
Hola, ¿es posible colocar el campo » NIF» debajo de los nombres o al inicio?
Hola Antonio, tu blog me parece increíble!!
A mí me gustaría poder poner un campo donde sea obligatorio elegir entre autónomo o particular.
Para ese tipo de campo ¿me recomiendas un plugins o con código?
Un Saludo
Abraham.
https://www.maderagrabada.com
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,
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
Hola Antonio
Mi pregunta es tengo un boton que abre watsap en una pestaña nueva
y abajo del boton tengo una caja de texto en el que el usuario colocara su numero de telefono
como hago para que en el boton que habre la URL de watsap agarre el numero de telefono de ese cliente.
todo el codigo esta dentro de la carpeta Functions.php
ESTE ES EL CODIGO
add_action( ‘woocommerce_admin_order_data_after_shipping_address’, ‘add_example_column_contents’);
function add_example_column_contents($post_id)
{
// create some tooltip text to show on hover
$tooltip = __(‘ENVIE INFORMACION POR WHATSAPP.’, ‘textdomain’);
// create a button label
$label = __(‘Enviar Datos de Pedido’, ‘textdomain’);
echo ‘ Numero: ‘;
$nombre = $_GET[«nombre»];
echo ‘‘.$label.’‘;
}
Hola, una pregunta, desconozco si es aqui, lo qu necesaito es poder tener una opción para el que cliente elija si quiere que se le envíe factura o no, he probado este plugin WooCommerce PDF Invoices & Packing Slips y este lo puedes configurar que te genere siempre una factura (el problema es que el que no esta interesado se inventa campos como por ejemplo el dni y nos serian facturas legales). Lo `puedes configurar para que no te genere la factura y tu después a quien quiera una factura poder facturar el pedido.
Lo que yo quiero es que el cliente sea el que diga si quiere factura o no durante el proceso de compra y automáticamente te la genere si ha dicho que si y que no te la genere si no lo ha solicitado. (para los albaranes de pedido ya crearé yo una factura simplificada por todos esos pedidos)
Primero de todo FELICITARTE por tu buena labor y todo lo que nos enseñas!!! Hace tiempo de este post, pero ahora lo necesito yo ;(
Me gustaría saber como puedo poner los dos campos en una misma línea, o sea que saliera el Phone y al costado el NIF (igual que como se muestra Nombre y Apellido, en la misma línea)
Gracias
Me gustaría saber si este campo personalizado, le puedo añadir para que cobre ejemplo. Quiero añadir el campo de lo quieres regalar e incluir un costo adicional, ya tengo el campo creado, pero como hago para que el valor sume.
Muchas gracias por el post.
hola , estoy usando Checkout Manager for WooCommerce este plugins me permite agregar campos adicionales en mi caso coloqué 2 campos referencia y banco.
quiero que aparezcan en el correo que envia por defecto woocommerce. ya probe
su snippet
/**
* 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’;
return $keys;
}
sustituyendo NIF por el campo clave o Id pero no logro hacer que este aparezca en el correo. alguna ayuda porfavor
estoy usando code snnipet para agregar codigo
Hola como podría añadir un campo para todos los productos de woocommerce y que luego pueda añadirlo a las facturas
Buenas tardes,
Excelente post !!!!
Tengo una duda.
Se puede activar la casilla del DNI en los datos del pedido, solo para determinadas zonas, como por ejemplo que el DNI haya que agregarlo solo para envios a Canarias y para el resto no.
Muchas gracias
Hola, ¿Cómo hago para que la información de los campos adicionales que agregue aparezca en el detalle del pedido y en los correos que se envían al vendedor y al comprador ?
Nota: Use el metodo 1. Añadir campos personalizados en WooCommerce con un plugin.
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!
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!!
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!
Hola buen dia, podrias ayudarme necesito agregar 2 campos mas en los email de nuevo pedido que llega a la tienda, los campos son precio por unidad y el sku, de antemano gracias!
Buen día,
¿cómo podría añadir campos que guarden archivos, como por ejemplo fotos?
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?
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.
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?
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!
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.
Hola Agustín!
Para eso te recomiendo usar algún plugin que te permita añadir campos adicionales en el front-end de la ficha de producto, como por ejemplo este: https://es.wordpress.org/plugins/woocommerce-product-addon/
Saludos!
Hola tengo una pregunta, por esta vía de snippets se puede agregar un campo al gateway.?
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!
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
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?
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.
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!
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
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.
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!
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?
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?
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!!!!
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…
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!
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…!!
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!
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!
Muchas gracias. Perfectamente ejecutado y explicado.
Un saludo
Me alegra que te haya gustado Carlos 🙂
Un saludo!
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.
¿Y para añadir también el NIF en la página de confirmación?
Sea cual sea el método de pago.
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
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.
Hola Diego,
Vas a tener que desarrollar un código a medida en el functions.php de tu tema o desarrollarlo como plugin. No te queda otra.
Saludos!
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
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.
verdaderamente eres una maquina, cada vez que tengo alguna duda miro tu web, sigue así
un saludo
Jaja… Para eso estamos Enrique 😉
Saludos!
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.
Hola Ismael,
Echa un vistazo al link que dejo en la respuesta que le doy a Victor más arriba.
Saludos!
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?
Hola Antonio!
Agradezco de antemano tu respuesta… pero ya encontré el archivo en el Cpanel y lo corregí y ya esta todo restablecido.
Saludos
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 ?
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!
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
Hola Jose,
Elimina ese código y prueba con el código que menciono en este comentario de respuesta a Victor.
Saludos!
!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! 🙂
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!
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.
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!
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.
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!
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?
Hola Laura,
Eso depende de la plataforma de mailing con la que estés trabajando. Por ejemplo, si es con mailchimp, puedes usar este sencillo plugin:
https://es.wordpress.org/plugins/woocommerce-mailchimp/
Si trabajas con otra plataforma, entonces tendrás que buscar un plugin que integre esa plataforma con WooCommerce.
Saludos!
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í:
Hola Miquel,
Prueba con el código snippet que menciono en este comentario.
Saludos!
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?
Hola Juan,
No sé a qué te refieres. ¿Has tenido algún problema al entrar en la web?
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
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;
}
¡Gran aporte Jairo!
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 . »;
}
Hola, con el código siguiente añadido a functions.php consigo tener el campo del NIF en el formulario y el dato recogido en el pedido, pero finalmente no se incluye en la factura PDF.
Alguna idea donde podría fallar?
Gracias de antemano.
Hola Rock’n Nails,
Echa un vistazo a este artículo –>¿Aún no sabes generar facturas con WooCommerce?, seguro que te ayuda.
Saludos!
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.
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!
Como se puede cambiar para que el campo sea adjuntar un archivo o
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
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!
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.
¡Gran aporte Javier!
Muchas gracias.
Un saludo. Y espero seguir viéndote por aquí 😉
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.
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?
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!
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.
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!
¿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.
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
Hola Víctor,
Si, se podría hacer, pero con otro código snippet mucho más complejo. Te paso un link donde puedes verlo –> http://bit.ly/1XQ7Vgf
Un saludo!
Muchas gracias!
Me ha sido de mucha ayuda este tutorial y el snippet del comentario.
Un saludo!
Víctor
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
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
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
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!!
Me alegra saberlo Javier 😉
Aquí tienes la respuesta a tu pregunta –> ¿Aún no sabes generar facturas con WooCommerce?
Saludos!
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!!
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.
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!
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)
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!
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!
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!
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.
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
Hola Wilson y Carlos,
Esos campos dropdown ya vienen incluidos por defecto en la página de pago de WooCommerce y funcionan exactamente como dices.
Un saludo!
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
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
Hola Tunder,
El código del campo del NIF no debería afectar al diseño de la página de pago.
El problema seguramente esté en que la plantilla no está actualizada.
Un saludo.
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
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
muchas gracias!!
Hola Andres. Podrías añadir cual seria el código para hacer que salga ‘select‘. Lista de opciones.
Muchas gracias desde ya.
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.
Hola Raul,
Para hacer ese tipo de configuraciones te recomiendo el plugin Product Add-ons de WooThemes. Te permite añadir todo tipo de opciones extra a cada producto y además configurar un coste adicional para cada opción extra.
Espero que te sirva.
Saludos!
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.
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.
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!
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
Hola Antonio
Sabes si además de insertar el nuevo campo NIF, es posible validarlo?
Saludos!
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!
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
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.
Hola,
yo lo he podido añadir o modificar desde la opción de campos personalizados que encontramos dentro del pedido en woocommerce–>pedidos.
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
#
–
Excelente aporte, quisiera saber como se indicaría si el campo fuese tipo select. Agradezco tu colaboración.
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.
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!
Muchas gracias!! nos ha venido de perlas para nuestra web ya que cuando nos compraban directamente no teníamos todos los datos necesarios para hacer la factura.
Enhorabuena por el blog
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.
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
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!
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!
Lo logré. Dificilísimo.
Acá esta la solución. Salvo que yo integre unos complementos adicionales como el la integración de mailchimp y el de woocommerce.
http://www.sellwithwp.com/paid-memberships-pro-woocommerce-memberships/
Sería ideal si adaptas esta publicación al español. Serviría muchisisimo.
Saludos!!
Muy bien explicado, clarito, conciso y con dos niveles de aprendizaje. Gracias Antonio!
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!
Llevas razón Ricardo,
El problema se soluciona con el siguiente código:
Espero que te sirva.
Un saludo!
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?
Gracias!!! Muy bueno!! Lo único es que necesito que el campo NIF sea obligatorio… ¿se puede?
Hola Julio,
Claro que se puede. Sólo tienes que añadir la siguiente línea de código:
justo debajo de esta línea
que se encuentra en el primer código snippet del artículo.
Un saludo!
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??
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!!
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.
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.
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.
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!
Gracias por compartir.. Estaba buscando como hacerlo y con el plugin es rapidísimo 🙂
Un saludo
Rafa
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
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!
Hola fantástico tuto; sólo una cosa, todo me funciona correctamente excepto el Nif que en el email no aparece sabes que puede ser??
Gracias.
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!
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
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!
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
Hola Sergio,
Puedes recuperar el valor del nuevo campo usando la siguiente función:
Saludos!
Gracias. Lo voy a probar y comento el resultado.
Prueba concluida.
Prueba perfecta.
Gracias!!
Lo que no entiendo es como WooCommerce no tiene ese campo como suyo.
Saludos
Justo venía a comentar que esto es lo único que le falta.