Objetivo

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.

Y si te parece muy complicado, recuerda que un experto en WordPress, como yo, podría hacerlo por ti. Además de todos los cambios y funciones que necesites en tu WordPress con WooCommerce.

HAGAMOS DESPEGAR TU NEGOCIO ONLINE 🚀

Te ayudo a potenciar tu página web o tienda online con estos servicios.

DESARROLLO WEB

MANTENIMIENTO WEB

CONSULTORÍA WEB

OPTIMIZACIÓN WPO

DESINFECCIONES

SOPORTE WEB

Publicaciones Similares

Deja una respuesta

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

Responsable: charrua.es. Finalidad: Poder contestar tu solicitud. Almacenamiento de los datos: Los datos son almacenados en un servidor alojado dentro de la UE y gestionado por charrua.es. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.