네, 제가 링크한 주제에서 빠져 있는 예시입니다. SSO 로그인 과정의 일부로 add_groups SSO 매개변수를 사용하여 사용자를 그룹에 추가할 수 있습니다. 기본적으로 WP DIscourse 플러그인은 SSO 페이로드에 이 매개변수를 보내지 않지만, 이 매개변수를 SSO 페이로드에 추가하는 데 사용할 수 있는 필터가 플러그인에 있습니다.
아래의 코드를 테마의 functions.php 파일이나 플러그인에 추가하면 작동해야 합니다. 이 방식으로 여러 그룹에 사용자를 추가할 수 있습니다. add_groups 매개변수는 쉼표로 구분된 그룹 이름 목록(쉼표 앞뒤에 공백 없이)을 허용합니다:
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['add_groups'] = 'your_group_name';
return $params;
}
특정 사용자만 그룹에 추가하려는 경우, 다음과 같이 함수를 호출할 수 있습니다:
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*사용자가 그룹에 추가되어야 하는지 확인하기 위한 조건을 여기에 추가 */) {
$params['add_groups'] = 'your_group_name';
}
return $params;
}
remove_groups SSO 매개변수를 사용하여 사용자를 그룹에서 제거할 수도 있습니다.
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['remove_groups'] = 'your_group_name';
return $params;
}
또는
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*사용자가 그룹에서 제거되어야 하는지 확인하기 위한 조건을 여기에 추가 */) {
$params['remove_groups'] = 'your_group_name';
}
return $params;
}
제가 링크한 add_user_to_discourse_group 함수를 사용하는 것과 비교할 때, 이 접근 방식의 주요 단점은 기존 사용자의 그룹 멤버십이 업데이트되기 전에 Discourse에서 로그아웃한 후 다시 로그인해야 한다는 것입니다.