自动将新用户(来自 WP 集成)添加到群组

是的,这正是我刚才链接的主题中所缺失的示例。您可以利用 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,其组成员资格才会更新。

5 个赞