Creando y configurando campos de usuario personalizados

:bookmark: This guide explains how to create and configure custom user fields in Discourse, including how to add them to the signup form, user profiles, and user directory.

:person_raising_hand: Required user level: Administrator

Custom user fields allow you to collect additional information from your users beyond the standard profile fields. These fields can be displayed on user cards, user summary pages, and even retrieved using the Data Explorer plugin. This guide will walk you through the process of creating and configuring custom user fields.

Adding a user field

  1. Go to Admin > Community > User Fields (discourse.example.com/admin/config/user-fields).

  2. If you haven’t created any user fields yet, you’ll see this screen:

  3. Click the “Add user field” button to add a new field.

Choosing a field type

The field type determines the input field users will see on the signup form. Choose based on the kind of information you’re collecting:

Text field

Confirmation

Dropdown

To add options for a dropdown field:

  1. Click on the option input
  2. Type an answer and click “Create”
  3. Repeat for additional options

The completed options should look similar to this:

Setting the field name and description

  • Field Name: Appears before the input on the signup form and user profile
  • Field Description: Appears after the input to help users complete the field

:information_source: Both the field name and description are required to save a field.

Here’s how custom fields appear on the signup form:

Configuring user field options

Field Requirements

  • Optional - Optional fields may be left empty by users
  • For all users - When a field is required by all users, every account, including logged on users will be forced to fill it. This is very useful for cases such as a terms-of-service (ToS) requirement.
  • On signup - All new account will be required to fill the field.

Additionally, at the bottom of the creation form, you’ll find these options:

  • Editable after signup: Allows users to update the field from their profile page
  • Required at signup: Makes the field mandatory during account creation
  • Show on public profile: Displays the field value on the user’s summary page
  • Show on user card: Shows the field value on the user card
  • Searchable: Enables searching for users based on this field’s value in the user directory

Show on public profile

When enabled, the field value will be shown on the user’s profile page:

Show on user card

When enabled, the field value will be displayed on the user card:

Searchable

When enabled, you can search for users based on their custom field values:

Saving and editing fields

  1. Click “Save” to add the field to your site’s list of user fields
  2. To edit a field, click the “Edit” button next to it in the list
  3. To delete a field, click the “Delete” button

Adding custom fields to the user directory

  1. Go to the user directory
  2. Click the wrench icon:

  1. Check the custom user fields you want to display
  2. Click “Save”

The selected custom fields will now appear in the user directory table:

Last edited by @fzngagan 2025-07-17T09:12:38Z

Last checked by @hugh 2024-08-27T04:45:20Z

Check documentPerform check on document:
38 Me gusta

Creo que faltan dos imágenes en los siguientes encabezados:

No estoy seguro si está relacionado con Imágenes faltantes en Meta.discourse.org – también publicaré allí.

¿Puedo ver esas imágenes? (también en una ventana anónima)

1 me gusta

No puedo ver esos

Pero el segundo funciona en mi cita.

Editar

1 me gusta

Curiosamente, puedo ver la segunda imagen en la cita, pero no en la publicación original ^^

1 me gusta

Hmm. Eso es interesante. Creo que hay una solución en camino para el problema de Missing images at Meta.discourse.org, así que espero que se resuelva con eso. :crossed_fingers:

2 Me gusta

¿Hay alguna configuración que deba modificar para especificar la longitud máxima de un campo de usuario personalizado? En este momento, en este campo “Test” que creé como campo de usuario de prueba, no puedo introducir ni un solo carácter en mi perfil de usuario (ni siquiera “Test”, como se muestra).

Me encantaría un tipo de campo: ¿es posible enlace / URL?

Dado que las URL son texto, el campo de texto funciona técnicamente, @Vaping_Community. Sin embargo, es posible que esté solicitando detalles adicionales como validación de valor o similar.

Podría buscar o crear un tema de Feature con lo que tiene en mente. :slight_smile:

3 Me gusta

¿Hay planes para permitir multilínea/compositor para campos de usuario personalizados? :folded_hands:

¡Tenga en cuenta que si desea incrustar un enlace en uno de los campos de usuario personalizados, debe usar la sintaxis HTML!
<a> href="url">texto del enlace</a>

Por ejemplo, para reconocer las directrices/políticas de la comunidad:

1 me gusta

¿Puedo vincular un reclamo personalizado de mi Auth0 SSO a un campo personalizado? Actualmente, el usuario ingresa la información del campo en Auth0 y luego tiene que ingresarla una segunda vez al registrarse. Me gustaría que el valor se mapeara si es posible.

Es posible, sí:

Dentro de tu endpoint SSO, tienes la capacidad de mapear el claim al payload, p. ej.:

const ssoPayload = {
  nonce: nonce,
  email: user.email,
  external_id: user.sub,
  username: user.nickname,
  name: user.name,
  add_groups: a_custom_group,
  'custom.user_field_1': user['https://yourdomain.com/company_id'],
  'custom.user_field_2': [etc...]
2 Me gusta

Gracias @dax

¿Hay alguna forma de verificar el nombre del campo en la base de datos? Por ejemplo, tenemos un campo de nombre, probé custom.firstname, custom.first_name y custom.firstName, ninguno de los cuales resultó en que los campos se poblaran en la pantalla de registro.

He revisado los registros de errores para confirmar que los campos del token están llegando como se muestra arriba.

Profundizando en el código, ¿es esto solo para Discourse Connect SSO? Estamos usando el plugin Auth0.

La sintaxis debe ser custom.user_field_x, donde x es el ID numérico del campo que se muestra en /admin/config/user-fields/{x}/edit.

Esa función de mapeo no está disponible directamente en el plugin Auth0.

Dicho esto, todavía hay opciones para lograr lo que describes:

  • crear un componente temático. Puedes agregar un pequeño script de front-end que sincronice automáticamente un campo de usuario personalizado de Discourse con un valor ya almacenado en Auth0. Por ejemplo, cuando un usuario inicia sesión y el campo está vacío, el script puede llamar a un endpoint seguro (una pequeña función en la nube) que obtenga el valor del campo de Auth0 y actualice el perfil de Discourse a través de la API.
  • usar herramientas de automatización. También podrías usar servicios de automatización externos como Zapier o Make para realizar esa sincronización fuera de Discourse. La ventaja es que no tienes que escribir/mantener código, solo pagar por el servicio de terceros.
  • desarrollo personalizado. Podemos extender el propio plugin Auth0 para que admita de forma nativa el mapeo de reclamaciones personalizadas a campos de usuario al iniciar sesión, o crear un plugin personalizado que funcione junto con el plugin Auth0.

Un inconveniente claro del enfoque del componente temático es que tendrías que escribir y mantener código personalizado tú mismo, al mismo tiempo que tienes cuidado desde el punto de vista de la seguridad para evitar introducir posibles errores o vulnerabilidades. Honestamente, no es una solución que recomendaría para un sitio de producción como el tuyo.

Si estuviera en tu posición, me inclinaría más por la segunda opción, utilizando herramientas de terceros, o consideraría enviar una solicitud de función o una solicitud de trabajo personalizado (dependiendo de la evaluación de nuestros gerentes de proyecto) para mejorar el propio plugin Auth0.

Si estás interesado en explorar la última opción, podemos continuar la discusión en privado.

1 me gusta