您可以通过 SSO 更新您在 Discourse 中创建的用户字段。这不需要安装插件。为此,您需要知道 Discourse 在数据库中用于自定义字段的名称。我知道的最简单的方法是进入您的管理后台 / 自定义 / 用户字段页面,然后加载该页面的 JSON 版本。例如:https://forum.example.com/admin/customize/user_fields.json
该页面的 JSON 数据大致如下所示:
{
user_fields: [
{
id: 12,
name: "News Letter",
description: "Send me a newsletter",
field_type: "confirm",
editable: false,
required: 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
}
]
}
用户自定义字段的命名格式为 user_field_<field_id>。这意味着,在我的 JSON 示例中,“News Letter”字段的名称是 user_field_12,“Company”字段的名称是 user_field_13。请使用这些信息来更新 SSO 负载。
例如,结合我上一篇文章中提到的 wpdc_sso_params 过滤器,将以下代码添加到您主题的 functions.php 文件中,即可在用户通过 SSO 登录时将所有用户的“Company”字段设置为“acme”。请将函数名中的 my_namespace 替换为您网站的唯一命名空间:
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;
}
若要添加基于您网站 WordPress 用户数据的字段,请使用该函数的 $user 参数来获取有关用户的详细信息。