El checkout o página de finalizar pago de Woocommerce por defecto no trae el campo de rellenar el CIF(Código de Identificación Fiscal) para empresas o el NIF(Número de identificación Fiscal) para autónomos. Esto trae consigo que si nos compra una empresa o un autónomo, aunque tengamos un programa por defecto de facturas no generará el CIF e igualmente tendremos que hacerla a mano.
Pero siempre hay un código o un plugin para todo en la sección de snippets para Woocommerce. Así que no os voy a recomendar plugin para que aparezca este campo y se sincronice con el plugin de facturas, lo haremos todo con un código.
Índice
Añadir CIF en Woocommerce sin Plugin
Añade este código al final del archivo functions.php de tu child theme.
/*
* Añadir casilla NIF en el checkout
*/
function woo_custom_field_checkout($checkout) {
echo '<div id="additional_checkout_field">';
woocommerce_form_field( 'nif', array( // Identificador del campo
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'required' => true, // Aquí muestra que no es obligatorio, si queres que sea obligatorio pon 'True' en vez de 'False'
'label' => __('NIF / CIF'), // Nombre del campo
'placeholder' => __('Ej: 12345678X'), // Texto guía que se muestra dentro de la celda.
), $checkout->get_value( 'nif' )); // Identificador del campo
echo '</div>';
}
add_action( 'woocommerce_after_checkout_billing_form', 'woo_custom_field_checkout' );
/*
* INCLUYE NIF/CIF EN LOS DETALLES DEL PEDIDO CON EL NUEVO CAMPO
*/
function woo_custom_field_checkout_update_order($order_id) {
if ( ! empty( $_POST['nif'] ) ) {
update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'woo_custom_field_checkout_update_order' );
/*
* MUESTRA EL VALOR DEL CAMPO NIF/CIF LA PÁGINA DE MODIFICACIÓN DEL PEDIDO
*/
function woo_custom_field_checkout_edit_order($order){
echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );
/*
* INCLUYE EL CAMPO NIF/CIF EN EL CORREO ELECTRÓNICO DE AVISO A TU CLIENTE
*/
function woo_custom_field_checkout_email($keys) {
$keys[] = 'NIF';
return $keys;
}
add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');
Con este código conseguiremos que en la página de pago de nuestra tienda aparezca el campo para rellenar el CIF o NIF de forma opcional. Si deaseas ponerlo obligatorio en el código viene explicado en comentarios como hacerlo. Quedaría algo así:

Añadir CIF en mis facturas de Woocommerce
En el caso de que quieras que salga automáticamente en tu gestor de facturas de Woocommerce, en este caso pongo el código para el plugin que recomendé en ese artículo.
/**
*Añadir el CIF automáticamente en el plugin de facturas 'WooCommerce PDF Invoices & Packing Slips'
*/
add_filter( 'wpo_wcpdf_billing_address', 'anadir_cif_factura' );
function anadir_cif_factura( $address ){
global $wpo_wcpdf;
echo $address . '<p>';
$wpo_wcpdf->custom_field( 'NIF', 'NIF: ' );
echo '</p>';
}
Si tienes un plugin diferente no sirve.
Conclusiones
Los clientes son un poco reacios a dar el DNI, ya que es algo privado y aumenta más el tiempo al rellenar los datos del formulario de compra a no ser que sea una empresa que estarán encantado de dártelo.
Pedir el DNI en el proceso en las compras que realizan en tu tienda online en teoría es obligatorio, que no lo piden las tiendas grandes, pues sí pero yo aviso. Por eso en el código está como obligatorio, ya que cada uno…
Recordaros que en el artículo de cómo debe ser la página de finalizar compra tenéis una guía con las directrices que recomiendo o bien puedes ver mi servicio de desarrollo de tiendas online.
Muy buen post
Cuidado, la función contiene una ñ y no funciona.
Debería ser:
add_filter( ‘wpo_wcpdf_billing_address’, ‘anadir_cif_factura’ );
function anadir_cif_factura( $address ){
global $wpo_wcpdf;
Anadir o Add o cualquier otra cosa sin ñ.
Madremia… Gracias por avisar Elena!!
Lo modifico, Un saludo!
Hola!
Muy buen post. Tengo una duda. He añadido el código, pero en las facturas que ya existen no aparece el NIF. Esto es porqué al estar ya emitidas no puede aparecer, o porqué he añadido mal el código.
Muchas gracias
Hola Elena,
Es normal que no aparezca ya que esas personas no pusieron su DNI/NIF cuando hicieron el pedido, por tanto no es posible que salga. Otra historia es que edites tu el pedido. En este caso pondrás el DNI.
Otra cosa que no sé es que plugin de facturación tendrás, ya que lo tendrás que enlazar para que salga ese dato.
Un saludo!
¿El valor del nif no se guarda en la base de datos verdad?
es decir, cada pedido ha de ingresar el NIF