Cómo añadir el campo DNI en WooCommerce

jorge

Ecommerce

Agregar un campo de Documento Nacional de Identidad (DNI) en el proceso de pago de WooCommerce puede ser esencial para muchos negocios. Ya sea por razones fiscales, de envío, o por requerimientos de validación específicos, esta guía te mostrará cómo hacerlo tanto con plugins como con código personalizado. Vamos allá.

Métodos para añadir el campo DNI en WooCommerce

Existen dos formas principales de añadir el campo DNI en WooCommerce:

  1. Uso de Plugins
  2. Mediante código personalizado

Plugins recomendados para añadir el campo DNI

Vamos a echar un vistazo a algunos plugins que pueden facilitar esta tarea:

  1. Checkout Field Manager (Checkout Manager) for WooCommerce
    • Instalaciones activas: 90,000+
    • Características:
      • Añadir campos personalizados en la página de pago.
      • Reordenar, eliminar y cambiar tipos de campos.
      • Soporta una variedad de tipos de campos: texto, área de texto, contraseña, radio, casilla de verificación, etc.
      • Forzar la inclusión de dirección de envío, creación de cuenta y eliminación de notas del pedido.
  2. Checkout Field Editor (Checkout Manager) for WooCommerce
    • Instalaciones activas: 400,000+
    • Características:
      • Añadir hasta 20 tipos diferentes de campo.
      • Editar campos predeterminados de WooCommerce.
      • Reorganizar campos de pago.
      • Validar campos y agregar clases CSS personalizadas.
  3. WC – APG Campo NIF/CIF/NIE (NO RECOMENDADO)
    • Este plugin en particular ha demostrado ser inestable y presenta errores, no recomendándose su uso.

Instrucciones para usar Checkout Field Manager (Checkout Manager) for WooCommerce

  1. Instalación del plugin:
    • Ve a Plugins > Añadir nuevo en tu panel de administración de WordPress.
    • Busca Checkout Field Manager for WooCommerce.
    • Instálalo y actívalo.
  2. Configuración:
    • Navega a WooCommerce > Settings > Checkout Fields.
    • Añade el campo DNI en la sección deseada (facturación o envío).
    • Configura los atributos del campo (tipo de campo, etiqueta, lugar del campo, etc.).

Añadir el campo DNI mediante código personalizado

Si prefieres no depender de plugins adicionales, puedes añadir el campo DNI a través de código:

  1. Accede al archivo functions.php de tu Child Theme:
    • Asegúrate de que estás trabajando en un Child Theme para evitar que tus cambios se sobrescriban con futuras actualizaciones del tema.
  2. Añade el siguiente código:
// Añade el campo NIF/DNI en el 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>' . __('Información adicional') . '</h2>';
    woocommerce_form_field( 'nif', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('¿Quieres Factura? *No obligatorio'),
        'required'      => false,
        'placeholder'   => __('Introduce el Nº de DNI'),
    ), $checkout->get_value( 'nif' ));
    echo '</div>';
}

// Guarda el valor del campo NIF/DNI en el pedido
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, 'NIF', sanitize_text_field( $_POST['nif'] ) );
    }
}

// Muestra el valor del campo NIF/DNI en la página de edición del pedido en la administración
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/DNI 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;
}

Deja un comentario

JORGEHUDSON.COM

SEO Basado en resultados, sin secretos.

Redes