Cómo añadir campos al formulario de registro de WooCommerce

Por defecto, el formulario de registro de WooCommerce solo pide el correo electrónico, pero ¿y si quieres pedir más datos para poder registrarse? ¿se puede?

Lo primero que debes tener en cuenta es que, también por defecto, la página de «Mi cuenta» de WooCommerce no permite el registro, así que primero deberás activar este ajuste de WooCommerce.

Una vez hayas comprobado que esté activo el ajuste, solo te queda decidir qué campo quieres añadir al formulario de registro de WooCommerce y crear una función como esta:

/* Campo extra en registro de WooCommerce */
add_action( 'woocommerce_register_form', 'ayudawp_nuevo_campo_registro_woo' );
function ayudawp_nuevo_campo_registro_woo(){
woocommerce_form_field(
'grupo_favorito',
array(
'type' => 'text',
'required' => true, // esto añade un asterisco
'label' => '¿Cuál es tu grupo musical favorito?'
),
( isset($_POST['grupo_favorito']) ? $_POST['grupo_favorito'] : '' )
);
}
//Añadimos validación del campo
add_action( 'woocommerce_register_post', 'ayudawp_validar_campos', 10, 3 );
function ayudawp_validar_campos( $username, $email, $errors ) {
if ( empty( $_POST['grupo_favorito'] ) ) {
$errors->add( 'error_grupo_favorito', '¡En serio, queremos saberlo!' );
}
}
//Añadimos el campo a la base de datos
add_action( 'woocommerce_created_customer', 'ayudawp_guardar_campos_registro' );
function ayudawp_guardar_campos_registro( $customer_id ){
if ( isset( $_POST['grupo_favorito'] ) ) {
update_user_meta( $customer_id, 'grupo_favorito', wc_clean( $_POST['grupo_favorito'] ) );
}
}

En el código anterior hacemos 3 cosas:

  1. Creamos un nuevo campo en el que pedimos al usuario que nos diga cuál es su grupo favorito. (grupo_favorito) y el texto visible.
  2. Añadimos validación para mostrar un error si no se rellena el campo, haciéndolo obligatorio.
  3. Guardamos el valor en la base de datos.

O sea, esto:

Este código que hemos visto lo ideal es que lo añadas a un plugin de personalizaciones, o en su defecto al archivo functions.php del tema hijo activo.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 4

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

9 comentarios en “Cómo añadir campos al formulario de registro de WooCommerce”

  1. saludo Fernando desde Venezuela, gracias por la info va de lujo, unas consultas:
    como modifico el rol del usuario desde el formulario de registro en especifico (comprador /vendedor) Son los roles.
    y lo otro si selecciona vendedor mostrar otro formulario

  2. Una consulta, como puedo colocar el campo en la primera posición, ya que quiero agregar un campo de nombre y apellido pero deseo que aparezca antes de todos los demás campos de registro (correo y contraseña). Gracias!

    1. // 1. ADD FIELDS
        
      add_action( 'woocommerce_register_form_start', 'bbloomer_add_name_woo_account_registration' );
        
      function bbloomer_add_name_woo_account_registration() {
          ?>
        
          
           *
          <input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="" />
          
        
          
           *
          <input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="" />
          
        
          
        
          add( 'billing_first_name_error', __( 'Error: First name is required!', 'woocommerce' ) );
          }
          if ( isset( $_POST['billing_last_name'] ) && empty( $_POST['billing_last_name'] ) ) {
              $errors->add( 'billing_last_name_error', __( 'Error: Last name is required!.', 'woocommerce' ) );
          }
          return $errors;
      }
        
      ///////////////////////////////
      // 3. SAVE FIELDS
        
      add_action( 'woocommerce_created_customer', 'bbloomer_save_name_fields' );
        
      function bbloomer_save_name_fields( $customer_id ) {
          if ( isset( $_POST['billing_first_name'] ) ) {
              update_user_meta( $customer_id, 'billing_first_name', sanitize_text_field( $_POST['billing_first_name'] ) );
              update_user_meta( $customer_id, 'first_name', sanitize_text_field($_POST['billing_first_name']) );
          }
          if ( isset( $_POST['billing_last_name'] ) ) {
              update_user_meta( $customer_id, 'billing_last_name', sanitize_text_field( $_POST['billing_last_name'] ) );
              update_user_meta( $customer_id, 'last_name', sanitize_text_field($_POST['billing_last_name']) );
          }
        
      }
  3. Tenía la misma duda y buscando logré encontrar la respuesta..
    Solo cambia ‘woocommerce_register_form’ por ‘woocommerce_register_form_start’ y listo =)

  4. hola fernando
    estoy empezando un proyecto de una Ecomerce , todavia no he empezado de retocar el tema pero tengo el tema astra instalado con una plantilla , tengo el plugin de itheme secuity instalado y configurado , tambien he empezado a configurar woocomerce siguiendo las instrucciones venidas en el post pero el problema es que los ajustes en la pagina de finalizar compra no se reflejan no los estoy viendo solo sigue la pagina como viene por defecto, una nota en el itheme security solo soy yo el administrador no se si tengo que configurarlo tambien para que los clientes pueden crear cuentas y los demas ajusteS
    SE AGRADECE DE ANTEMA LA AYUDA
    MUCHAS GRACIAS

  5. buenas noches Fernando
    ante de todo le agradezco la atención todavía no he hecho nada en la web http://www.elsoko.com
    esta con el tema Astra con una plantilla.
    tengo capturas de pantallas no se como mandárselas, en la pestaña de cuentas y privacidad he escogido todas las opciones para poder elegir en el futuro la mejor (video en el canal side ground)
    en los ajustes generals de WordPress tengo activada la opción de miembros cualquier puede registrarse el perfil por defecto es suscriptor.
    espero dar un poco de pistas
    muchas gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba
Ir al contenido