Cómo agregar el campo de RFC en el checkout de WooCommerce

En México es muy común pedir el RFC para poder emitir una factura, sin embargo WooCommerce no trae ese campo, por esa razón tenemos nosotros que agregar esa opción, ya sea manual o con un plugin.

Agregando RFC con un plugin

Esta solución es fácil, además de ayudar a las personas que no saben programar o que no quieren tocar nada de código.

El plugin que vamos a utilizar se llama Checkout Field Editor for WooCommerce. Lo instalamos, activamos y después nos dirigimos a WooCommerce/Formulario de pago:

Como podemos observar tenemos todos los campos del Checkout, con las opciones de Añadir un campo, Eliminar, Activar o Desactivar:

En este caso vamos a gregar un nuevo campo:

  • Tipo: texto
  • Nombre: billing_rfc
  • Etiqueta : RFC

En mi caso no será obligatorio todo los demás campos, porque los dejo activos.

Listo, ya tenemos el campo de RFC y lo podemos mover en la ubicación de nuestro agrado, en mi caso será debajo del nombre de la empresa:

Y este es el resultado:

Agregando RFC con código :

Esta opción, es por si quieren ahorrarse un plugin y agregar el RFC con un poco de código.

Encontré muchas formas de hacerlo, sin embargo pondré la solución más simple y fácil.

Este código va insertado en el archivo functions.php de tu plantilla te recomiendo que primero hagas un tema hijo de tu plantilla y después agregues el código.

Si usas Elementor en Elementor/ custom code / header y agregas el código ahí.

Primero tenemos que registrar el campo en la página de checkout :

/**
 * Añade el campo RFC 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 '<div id="additional_checkout_field"><h2>' . __('') . '</h2>';

    woocommerce_form_field( 'rfc', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('RFC'),
        ), $checkout->get_value( 'rfc' ));

    echo '</div>';

}

Este sería el resultado:

Ahora, vamos a actualizar la información del pedido con un nuevo campo :

/**
 * 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['nif'] ) ) {
        update_post_meta( $order_id, 'RFC', sanitize_text_field( $_POST['nif'] ) );
    }
}

Muestra el valor del nuevo campo RFC en la página de edición del pedido:

/**
 * Muestra el valor del nuevo campo RFC 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>'.__('RFC').':</strong> ' . get_post_meta( $order->id, 'RFC', true ) . '</p>';
}

Por último, vamos agregar el RFC en el email de notificación del cliente :

/** Incluye el campo RFC 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[] = 'RFC';
     return $keys;
 }

Como pueden ver no es muy difícil de integrar, si tienen algún problema con el código, házmelo saber.

Si requieres integrar un sistema de facturación en WooCommerce te recomiendo realvirtual

Estos artículos te pueden interesar:

Cambiar el botón de carrito por el de solicitar cotización en woocommerce.

WooCommerce México:Como agregar el “MXN” después del precio.

¿Cómo establecer precios diferentes según el rol de cada usuario en WooCommerce?

¿Como mostrar la palabra “Gratis”, en vez de $0 o precio vació en WooCommerce?

Web Hosting

Compartir

post relacionados

×
Ir al contenido