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'] ) );
}
}