Discourse에서 생성한 사용자 필드를 SSO를 통해 업데이트할 수 있습니다. 이 작업에는 플러그인이 필요하지 않습니다. 이를 수행하려면 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 매개변수를 사용하여 사용자 세부 정보를 가져오십시오.