Mapear campos de usuario personalizados

Puedes actualizar los Campos de Usuario que hayas creado en Discourse a través de SSO. Esto no requiere un plugin. Para hacerlo, necesitas conocer el nombre que Discourse utiliza en la base de datos para el campo personalizado. La forma más sencilla que conozco es ir a la página Admin / Personalizar / Campos de Usuario y luego cargar la versión JSON de la página. Por ejemplo: https://forum.example.com/admin/customize/user_fields.json

Los datos JSON de la página se verán más o menos así:

{
user_fields: [
{
id: 12,
name: "News Letter",
description: "Send me a newsletter",
field_type: "confirm",
editable: false,
required: true,
present_on_profile: false,
present_on_user_card: false,
position: 3
},
{
id: 13,
name: "Company",
description: "Where do you work?",
field_type: "text",
editable: true,
required: false,
present_on_profile: true,
present_on_user_card: true,
position: 4
}
]
}

Los campos personalizados de usuario se nombran como user_field_<field_id>. Esto significa que el nombre del campo “News Letter” de mi ejemplo JSON es user_field_12, y el nombre del campo “Company” es user_field_13. Utiliza esta información para actualizar la carga útil de SSO.

Como ejemplo, con el filtro wpdc_sso_params que mencioné en mi publicación anterior, el siguiente código añadido al archivo functions.php de tu tema establecerá el campo “Company” de todos los usuarios en “acme” cuando inicien sesión mediante SSO. Reemplaza my_namespace en el nombre de la función con un namespace único para tu sitio:

add_filter( 'wpdc_sso_params', 'my_namespace_set_discourse_custom_field', 10, 2 );
function my_namespace_set_discourse_custom_field( $sso_params, $user ) {
	$sso_params['custom.user_field_13'] = 'acme';

	return $sso_params;
}

Para agregar campos basados en los datos de usuario de WordPress de tu sitio, utiliza el parámetro $user de la función para obtener detalles sobre tus usuarios.

3 Me gusta