Añadir campos adicionales a Checkout de WooCommerce

Cuando tenemos necesitas de añadir campos adicionales en nuestro formulario de compra de la tienda podemos usar varias opciones disponibles que nos permiten personalizar las opciones.

Con la siguiente función podemos añadir más opciones a checkout de WooCommerce, en este caso añadimos los campos Razón social, dirección fiscal e IVA necesarios para la creación de la factura.

En el primer bloque utilizamos woocommerce_form_field para crear los campos personalizados que necesitemos, podemos crear tantos como queramos.

La ultima función wpo_wcpdf_billing_address es la que se encarga de añadir los datos en la Factura, para ello hay que tener instalado el plugin WooCommerce PDF Invoices & Packing Slips

-> https://wordpress.org/plugins/woocommerce-pdf-invoices-packing-slips/

Para añadir estas opciones puedes hacerlo en el archivo function.php de tu tema hijo o usar algún plugin adicional como Code Snippets

/*** Añade campos adicionales a la página de checkout de WooCommerce*/
add_action( 'woocommerce_after_order_notes', 'agrega_mi_campo_personalizado' );
woocommerce_form_field( 'Razón-Social', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Razón Social'),
'required' => false,
'placeholder' => __('Añade la Razón Social '),
), $checkout->get_value( 'Razón-Social' ));

woocommerce_form_field( 'Dirección-Fiscal', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Dirección Fiscal'),
'required' => false,
'placeholder' => __('Añade la Dirección Fiscal '),
), $checkout->get_value( 'Dirección-Fiscal' ));

woocommerce_form_field( 'IVA', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('IVA'),
'required' => false,
'placeholder' => __('21% '),
), $checkout->get_value( 'IVA' ));

echo '';}

/*** Comprueba que los campos no estén vacío*/
add_action('woocommerce_checkout_process', 'comprobar_campo_vacios');

function comprobar_campo_vacios() {

// Comprueba si se ha introducido un valor y si está vacío se muestra un error.
if ( ! $_POST['Razón-Social'] )
wc_add_notice( __( 'Razón Social, es un campo requerido. Debe de introducir su Razón Social para finalizar la compra.' ), 'error' );

if ( ! $_POST['Dirección-Fiscal'] )
wc_add_notice( __( 'La Dirección Fiscal, es un campo requerido. Debe de introducir su Dirección Fiscal para finalizar la compra.' ), 'error' );

if ( ! $_POST['IVA'] )
wc_add_notice( __( 'El IVA, es un campo requerido. Debe de introducir su IVA para finalizar la compra.' ), 'error' );
}

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

if ( ! empty( $_POST['Dirección-Fiscal'] ) ) {
update_post_meta( $order_id, 'Dirección-Fiscal', sanitize_text_field( $_POST['Dirección-Fiscal'] ) );
}

if ( ! empty( $_POST['IVA'] ) ) {
update_post_meta( $order_id, 'IVA', sanitize_text_field( $_POST['IVA'] ) );
}
}

/*** Muestra el valor del nuevo campo 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 ''.__('Razón-Social').': ' . get_post_meta( $order->id, 'Razón-Social', true ) . '';

echo ''.__('Dirección-Fiscal').': ' . get_post_meta( $order->id, 'Dirección-Fiscal', true ) . '';

echo ''.__('IVA').': ' . get_post_meta( $order->id, 'IVA', true ) . '';

}

/*** Incluye el campo 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[] = 'Razón-Social';
return $keys;

$keys[] = 'Dirección-Fiscal';
return $keys;

$keys[] = 'IVA';
return $keys;
}

/***Incluir en la factura (necesario el plugin WooCommerce PDF Invoices & Packing Slips)*/

add_filter( 'wpo_wcpdf_billing_address', 'incluir_Campos_en_factura' );

function incluir_Campos_en_factura( $address ){

echo $address . '';
$wpo_wcpdf->custom_field( 'Razón-Social', 'Razón Social: ' );
$wpo_wcpdf->custom_field( 'Dirección-Fiscal', 'Dirección Fiscal: ' );
$wpo_wcpdf->custom_field( 'IVA', 'Iva: ' );
echo '';
}

 

Updated on 1 mayo, 2021

Related Articles