Agregar campo al formulario de registro de WooCommerce

De forma predeterminada, el formulario de registro de WooCommerce solo solicita el correo electrónico, pero ¿qué pasa si desea solicitar más datos para poder registrarse? ¿Es posible?

Lo primero que debe tener en cuenta es que, de forma predeterminada, la página «Mi cuenta» de WooCommerce no permite el registro , por lo que primero deberá habilitar esta configuración de WooCommerce.

Una vez que haya verificado que la configuración está activa, todo lo que queda es decidir qué campo desea agregar al formulario de registro de WooCommerce y crear una función como esta:

/* campo extra en registro */
add_action( 'woocommerce_register_form', 'we_new_field_register_woo' );
function we_new_field_register_woo(){
woocommerce_form_field(
'favorite_food',
array(
'type' => 'text',
'required' => true, // This for the field to be required
'label' => 'What is your favorite food?'
),
( isset($_POST['favorite_food']) ? $_POST['favorite_food'] : '' )
);
}
//agregar validacion
add_action( 'woocommerce_register_post', 'we_validate_field', 10, 3 );
function we_validate_field( $username, $email, $errors ) {
if ( empty( $_POST['favorite_food'] ) ) {
$errors->add( 'error_favorite_food', 'We really want to know!' );
}
}
//agregar a base de datos
add_action( 'woocommerce_created_customer', 'we_save_register_fields' );
function we_save_register_fields( $customer_id ){
if ( isset( $_POST['favorite_food'] ) ) {
update_user_meta( $customer_id, 'favorite_food', wc_clean( $_POST['favorite_food'] ) );
}
}

En el código anterior hacemos 3 cosas:

  • Creamos un nuevo campo en el que le pedimos al usuario que nos diga cuál es su comida favorita. ( favorite_food) y el texto visible.
  • Agregamos validación para mostrar un error si el campo no está lleno, haciéndolo obligatorio.
  • Guardamos el valor en la base de datos.

Este sería el resultado:

Este código que hemos visto se agrega idealmente a un complemento de personalización como los sería Code snippets o, en su defecto, al functions.php de tu tema el cual puedes localizar en:

Cpanel > Administrador de archivos > Public_html > Dominio > wp-content > themes > Tema o tema hijo > Archivo functions.php

Updated on 2 noviembre, 2021

Related Articles