Cartographier les champs personnalisés de l'utilisateur

Vous pouvez mettre à jour les champs utilisateur que vous avez créés sur Discourse via SSO. Cela ne nécessite aucun plugin. Pour ce faire, vous devez connaître le nom que Discourse utilise dans la base de données pour le champ personnalisé. La méthode la plus simple que je connaisse consiste à accéder à la page Admin / Personnaliser / Champs utilisateur, puis à charger la version JSON de cette page. Par exemple : https://forum.example.com/admin/customize/user_fields.json

Les données JSON de la page ressembleront à ceci :

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

Les champs personnalisés utilisateur sont nommés user_field_<field_id>. Cela signifie que le nom du champ « News Letter » de mon exemple JSON est user_field_12, et celui du champ « Company » est user_field_13. Utilisez ces informations pour mettre à jour la charge utile SSO.

Par exemple, avec le filtre wpdc_sso_params que j’ai mentionné dans mon message précédent, le code suivant ajouté au fichier functions.php de votre thème définira le champ « Company » de tous les utilisateurs à « acme » lorsqu’ils se connectent via SSO. Remplacez my_namespace dans le nom de la fonction par un espace de noms unique pour votre site :

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;
}

Pour ajouter des champs basés sur les données des utilisateurs WordPress de votre site, utilisez le paramètre $user de la fonction pour obtenir des détails sur vos utilisateurs.

3 « J'aime »