Avisos
Vaciar todo

[Resuelto] Problemas para insertar apartado NIF en pedidos Woocommerce  

 
Joan Carles
 Joan Carles
Usuario experto

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/

Captura de Pantalla 2024 07 24 a las 11.07.56

 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

Respondido : 24/07/2024 10:10 am
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

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 

image

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] 
image

Verifícalo y nos comentas si de esta forma se muestra el campo como necesitas. 

Un Saludo 

Respondido : 24/07/2024 12:45 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Joan Carles
 Joan Carles
Usuario experto

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.

Captura de Pantalla 2024 07 31 a las 11.19.52

 

Respondido : 31/07/2024 10:23 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

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

Respondido : 31/07/2024 12:22 pm

Joan Carles
 Joan Carles
Usuario experto

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?

Captura de Pantalla 2024 07 31 a las 16.40.26

 

Saludos.

Respondido : 31/07/2024 3:41 pm
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

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

Respondido : 31/07/2024 4:24 pm

Cursos Gratuitos WordPress

Joan Carles
 Joan Carles
Usuario experto

Me sirve Karen: add_action( 'woocommerce_before_checkout_billing_form', 'woo_custom_field_checkout' );

Gracias por vuestra ayuda.

Saludos.

Respondido : 31/07/2024 4:46 pm
Bruno
 Bruno
Soporte CMS Webempresa Moderator

Que tal Joan Cales, 

Es un gusto poder ayudarte, cualquier otra duda que tengas estaremos atentos

Saludos!

Respondido : 31/07/2024 5:13 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress