안녕하세요, Discourse의 사용자 필드를 WordPress 사용자 메타데이터에 매핑하는 방법이 있을까요?
WordPress에 등록 양식을 만들어 메타데이터를 저장하고 있습니다. 사용자가 생성될 때 이 정보가 Discourse로 복사되어 프로필에 표시되기를 원하며, 이상적으로는 소개 카테고리에 미리 채워진 작성기를 표시하는 것이 좋습니다.
감사합니다
안녕하세요, Discourse의 사용자 필드를 WordPress 사용자 메타데이터에 매핑하는 방법이 있을까요?
WordPress에 등록 양식을 만들어 메타데이터를 저장하고 있습니다. 사용자가 생성될 때 이 정보가 Discourse로 복사되어 프로필에 표시되기를 원하며, 이상적으로는 소개 카테고리에 미리 채워진 작성기를 표시하는 것이 좋습니다.
감사합니다
방법을 찾은 것 같은데, 문제는 wp discourse 플러그인이 업데이트될 때마다 매번 변경해야 한다는 점입니다:
@simon 님이 플러그인 설정에 이 기능을 구현해 주시면 좋겠습니다. 기본적으로 WP의 커스텀 필드 이름을 Discourse에 매핑할 수 있는 방법을 제공하면 됩니다.
무엇을 하는지 확신이 없다면 플러그인 코드에 직접 변경 사항을 가하지 않는 것이 좋습니다. WP Discourse 플러그인은 액션 훅을 사용하여 플러그인이나 테마로 확장되도록 만들어져 있습니다. 이를 통해 플러그인을 업데이트할 때 덮어쓰기되는 변경 사항을 하지 않고도 플러그인을 커스터마이징할 수 있습니다.
Discourse로 전송되는 SSO 페이로드에 데이터를 추가하려면 wpdc_sso_params' 필터를 사용하십시오. 이 필터에 연결된 함수에는 두 개의 매개변수가 전달됩니다: $params(Discourse로 전달되는 SSO 매개변수 배열)와 $user`(WordPress 사용자 객체).
이 게시물에서 필터 사용 예시를 확인할 수 있습니다:
필터를 사용하여 사용자 정의 사용자 필드 데이터를 추가하는 데 문제가 있으면 알려 주세요.
감사합니다! 플러그인에서 호출하는 모든 훅에 대한 문서가 있을까요?
감사합니다.
아직 없지만, 있어야 합니다. 곧 처리하겠습니다.
SSO 매개변수를 읽고 사용자 필드에 저장하는 discourse 플러그인을 작성해야 하는지, 아니면 해당 기능이 이미 구현되어 있는지 확인하고 싶습니다.
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 매개변수를 사용하여 사용자 세부 정보를 가져오십시오.
완벽하게 작동해요, 다시 한번 감사합니다!