Añadir un campo personalizado en el checkout de WooCommerce

Añadir un campo personalizado en el checkout de WooCommerce

Agrega un campo personalizado al formulario de pedido, en la página de «Finalizar compra» (checkout) de WooCommerce.

// Crea el campo personalizado en el checkout
add_action( 'woocommerce_after_order_notes', 'create_custom_checkout_field' );
function create_custom_checkout_field( $checkout ) {

	echo '<div class="custom_checkout_field">';
	echo '<h3>Nuevo campo de pedido</h3>';

	woocommerce_form_field( 'campopersonalizado', [
		'type'     => 'text',
		'required' => 'true',
		'label'    => __( 'Campo personalizado' )
	],
		$checkout->get_value( 'campopersonalizado' )
	);

	echo '</div>';
}

// Valida el campo personalizado
add_action( 'woocommerce_checkout_process', 'validate_custom_checkout_field' );
function validate_custom_checkout_field() {
	if ( ! $_POST['campopersonalizado'] || empty( $_POST['campopersonalizado'] ) ) {
		wc_add_notice( __( 'Es necesario completar el campo personalizado' ), 'error' );
	}
}

// Guarda el campo personalizado en los datos del usuario
add_action( 'woocommerce_checkout_order_processed', 'save_custom_checkout_field' );
function save_custom_checkout_field( $order_id ) {
	// Obtiene el user_id del pedido
	$order   = wc_get_order( $order_id );
	$user_id = $order->get_user_id();

	if ( $user_id && $_POST['campopersonalizado'] ) {
		update_user_meta( $user_id, 'campopersonalizado', sanitize_text_field( $_POST['campopersonalizado'] ) );
	}
}

¿Te ha gustado este código? Coméntalo con códigosWP:

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

Scroll al inicio
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.