Añadir NIF, CIF o DNI a los formularios y facturas de WooCommerce.

Como os dijimos el otro día, WooCommerce, aun siendo increíble, no tiene en cuenta cuestiones importantes como el NIF, CIF o DNI en los datos de cliente. Algo obligatorio para las facturas en España.
Hoy vamos a enseñaros a añadirlo con y sin plugin.

1. Añadir el NIF, CIF o DNI a WooCommerce sin plugin.

En este caso añadiremos uno o varios códigos. Por lo tanto o los añades al functions.php de tu tema hijo, o a Snippets (como prefieras).

Sinceramente, con lo que se actualiza WooCommerce, y siendo algo tan vital, yo estoy más cómodo usando un plugin que código personalizado.
Porque si hay errores más adelante los del plugin pueden arreglarlo, y puedes deshabilitar los plugins también rápidamente.
Si no quieres complicarte, vete directamente al siguiente apartado para hacerlo con un plugin.
Pero esto es a gusto del consumidor.

El código ya lo han desarrollado otros, y os dejamos los ejemplos:

Aquí os dejo el primero resumido:

/**  
* MUESTRA EL CIF EN EL FORMULARIO DE PAGO (CHECKOUT) 
*/
add_action( 'woocommerce_after_order_notes', 'wpdesk_vat_field' );
function wpdesk_vat_field( $checkout ) {
    echo '<div id="wpdesk_vat_field"><h2>' . __('VAT Number') . '</h2>';
    
    woocommerce_form_field( 'vat_number', array(
        'type'          => 'text',
        'class'         => array( 'vat-number-field form-row-wide') ,
        'label'         => __( 'VAT Number' ),
        'placeholder'   => __( 'Enter your VAT number' ),
    ), $checkout->get_value( 'vat_number' ));
    
    echo '</div>';
}
/**  
* GUARDA EL NUEVO CAMPO EN EL PEDIDO 
*/
add_action( 'woocommerce_checkout_update_order_meta', 'wpdesk_checkout_vat_number_update_order_meta' );
function wpdesk_checkout_vat_number_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['vat_number'] ) ) {
        update_post_meta( $order_id, '_vat_number', sanitize_text_field( $_POST['vat_number'] ) );
    }
}
/**
 * HACER QUE SE VEA EL CAMPO EN LA ADMINISTRACIÓN DE WOOCOMMERCE
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'wpdesk_vat_number_display_admin_order_meta', 10, 1 );

function wpdesk_vat_number_display_admin_order_meta( $order ) {
    echo '<p><strong>' . __( 'VAT Number', 'woocommerce' ) . ':</strong> ' . get_post_meta( $order->id, '_vat_number', true ) . '</p>';
}
/**
* AÑADE EL CAMPO A LOS E-MAILS DE WOOCOMMERCE.
*/
add_filter( 'woocommerce_email_order_meta_keys', 'wpdesk_vat_number_display_email' );

function wpdesk_vat_number_display_email( $keys ) {
     $keys['VAT Number'] = '_vat_number';
     return $keys;
}

2. Añadir el NIF, CIF o DNI a WooCommerce con plugin.

Como os he dicho, yo prefiero este método. Al final el plugin es el código anterior «empaquetado». Pero podemos gestionarlo de otra manera, y los plugins más maduros tienen soporte y actualizaciones (con mejoras del código y nuevas funcionalidades).
Hay dos tipos de plugins que podemos usar para esto.

Plugins específicos:

Ya existen plugins específicos para añadir estos campos. Os dejo unos pocos:

Plugins no específicos.

Podéis también usar los plugins que permiten añadir campos a WooCommerce y hacerlos o no obligatorios. Tiene la ventaja que son plugins que llevan mucho tiempo, ya probados para todo tipo de campos y compatibles con otros plugins.
Os recordamos dos de los más importantes.

Os dejamos que probéis y elijáis la opción que más os convenga. Pero con esto, y el artículo del día pasado de la numeración, tendréis las facturas de WooCommerce legales en España.

Deja un comentario

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

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).

Time limit is exhausted. Please reload CAPTCHA.