Cómo añadir el NIF, CIF o NIE en Woocommerce

Este post te enseñará a agregar un campo personalizado a Woocommerce, en este caso particular el campo de NIF, CIF o NIE utilizado para la facturación en España.

Debemos agregar el fragmento de código en nuestro archivo functions.php de la plantilla "child". Recuerda que si lo agregas en la plantilla padre, al actualizarla perderás todas las modificaciones que alguna vez realizaste en sus archivos. Otra manera muy buena de realizar estos cambios, es con un plugin que he comenzado a utilizar Code Snippets, te permite agregar estos fragmentos de código directamente desde el panel de WordPress. Una vez que agregues el snippet recuerda que tienes que activarlo.

La metodología para crear un campo personalizado de Woocommerce es:

  • Definir y añadir el campo al checkout
  • Realizar la validación
  • Almacenarlo en la orden
  • Muestra el valor del nuevo campo «NIF» en la página de edición del pedido
  • Enviarlo en los emails de Woocommerce
/**
 * Añade el campo NIF a la página de checkout de WooCommerce
 */

add_action( 'woocommerce_before_checkout_billing_form', 'agrega_mi_campo_personalizado' );
 
function agrega_mi_campo_personalizado( $checkout ) {

    woocommerce_form_field( 'nif', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('NIF'),
        'placeholder'   => __('Ej: 99999999D'),
	 'required'      => true,
    ), $checkout->get_value( 'nif' ));

}


/**
 * Valida el campo en el checkout (Incluye un mensaje de validación)
 */

add_action('woocommerce_checkout_process', 'valida_campo_personalizado');

function valida_campo_personalizado() {

    // Si esta vacío, enviamos el error

    if ( ! $_POST['nif'] )
        wc_add_notice( __( '<b>NIF</b> es un campo requerido.' ), 'error' );
}


/**
 * Salva el campo a la orden
 */

add_action( 'woocommerce_checkout_update_order_meta', 'actualizar_campo_personalizado_order_meta' );

function actualizar_campo_personalizado_order_meta( $order_id ) {

    if ( ! empty( $_POST['nif'] ) ) {
        update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
    }

}


/**
 * 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){
    echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}


/**
 * 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;
}

Si te gusta y ayuda este artículo, déjame un comentario que estaré muy feliz de recibirlo.


Deja un comentario

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

Nombre *