Hola. Llevo toda la mañana probando insertar el campo NIF en la web https://viureagava.com/ sin éxito (tiene instalado el tema WOOSTIFY).
He probado con el código que aparece más abajo insertado en el archivo en functions.php del tema hijo y no funciona.
He probado con el plugin WC - APG Campo NIF/CIF/NIE https://es.wordpress.org/plugins/wc-apg-nifcifnie-field/
y nada.
¿Qué estoy haciendo mal?
Gracias de antemano.
JC.
/*
* 24-7-2024 AFEGIR CASELLA NIF MANUALMENT AL CHECKOUT
* Afegir aquest codi al final de l'arxiu functions.php del child theme.
*/
function woo_custom_field_checkout($checkout) {
echo '<div id="additional_checkout_field">';
woocommerce_form_field( 'nif', array( // Identificador del camp
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'required' => true, // Aquí mostra que no és obligatori, si es vol que sigui obligatori es posa 'True' en lloc de 'False'
'label' => __('NIF / CIF'), // Nom del camp
'placeholder' => __('Ej: 12345678X'), // Texte guia que es mostra dins de la cel·la
), $checkout->get_value( 'nif' )); // Identificador del camp
echo '</div>';
}
add_action( 'woocommerce_after_checkout_billing_form', 'woo_custom_field_checkout' );
/*
* INCLOU NIF/CIF ALS DETALLS DE LA COMANDA AMB EL NOU CAMP
*/
function woo_custom_field_checkout_update_order($order_id) {
if ( ! empty( $_POST['nif'] ) ) {
update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'woo_custom_field_checkout_update_order' );
/*
* MOSTRA EL VALOR DEL CAMP NIF/CIF LA PÀGINA DE MODIFICACIÓ DE LA COMANDA
*/
function woo_custom_field_checkout_edit_order($order){
echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );
/*
* INCLOU EL CAMP NIF/CIF AL CORREU ELECTRÒNIC D'AVÍS AL TEU CLIENT
*/
function woo_custom_field_checkout_email($keys) {
$keys[] = 'NIF';
return $keys;
}
add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');
Contenido solo visible a usuarios registrados
Hola Joan Carles,
No veo ningún error con el código o el plugin, sin embargo, lo que creo sucede es lo siguiente, actualmente estás utilizando el checkout a través de los bloques de Gutenberg que integra una nueva forma de visualización del checkout de WooCommerce
El inconveniente con este bloque es que no nos permite mostrar ningún campo personalizado que integremos y para poder añadirlo necesitarías editar todo el código del core principal del editor, si deseas añadir este tipo de campos personalizados necesitas eliminar el bloque de checkout de Gutenberg y utilizar la opción clásica del checkout añadiendo el propio shortcode de WooCommerce:
[woocommerce_checkout]
Verifícalo y nos comentas si de esta forma se muestra el campo como necesitas.
Un Saludo
Hola Karen. Hasta hoy no he podido mirarlo.
No entiendo bien lo que me comentas pues en la página de CHECKOUT ya aparece configurado con el shortcode [woocommerce_checkout].
Te adjunto una captura de pantalla y me dices.
Gracias.
Hola Joan Carles.
La página que utilizas para el Checkout veo que es " Facturación "
.- Edita la página Facturación
.- Elimina todo el bloque de checkout de Gutenberg
.- Añade un módulo ShortCode y añade el siguiente ShortCode:
[woocommerce_checkout]
Un saludo
Hola Pepe. Gracias.
Aunque no he hecho aún ningún pedido, parece que visualmente ahora funciona: https://viureagava.com/facturacion/
Una cosita más, si deseo que la casilla del NIF esté debajo de la casilla Nombre*, ¿qué tengo que hacer?
Saludos.
Hola Joan Cales,
Actualmente añadir este campo debajo de la casilla nombre requeriría programación a medida, lo que puede hacer es colocarlo encima de estas casillas (nombre, apellido) y que se muestre de primero, para ello necesitarías sustituir el código anterior por este:
/*
* AÑADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
*/
function woo_custom_field_checkout($checkout) {
echo '<div id="additional_checkout_field">';
woocommerce_form_field( 'nif', array( // Identificador del campo
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'required' => true, // ¿El campo es obligatorio 'true' o 'false'?
'label' => __('NIF / CIF'), // Nombre del campo
'placeholder' => __('Ej: 12345678X'), // Texto de apoyo que se muestra dentro del campo
), $checkout->get_value( 'nif' )); // Identificador del campo
echo '</div>';
}
add_action( 'woocommerce_before_checkout_billing_form', 'woo_custom_field_checkout' );
/*
* INCLUYE NIF/CIF EN LOS DETALLES DEL PEDIDO CON EL NUEVO CAMPO
*/
function woo_custom_field_checkout_update_order($order_id) {
if ( ! empty( $_POST['nif'] ) ) {
update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'woo_custom_field_checkout_update_order' );
/*
* MUESTRA EL VALOR DEL CAMPO NIF/CIF LA PÁGINA DE MODIFICACIÓN DEL PEDIDO
*/
function woo_custom_field_checkout_edit_order($order){
echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );
/*
* INCLUYE EL CAMPO NIF/CIF EN EL CORREO ELECTRÓNICO DE AVISO A TU CLIENTE
*/
function woo_custom_field_checkout_email($keys) {
$keys[] = 'NIF';
return $keys;
}
add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');
Pruébalo y nos comentas como va todo
Un Saludo
Me sirve Karen: add_action( 'woocommerce_before_checkout_billing_form', 'woo_custom_field_checkout' );
Gracias por vuestra ayuda.
Saludos.
Que tal Joan Cales,
Es un gusto poder ayudarte, cualquier otra duda que tengas estaremos atentos
Saludos!