Встроить регистрацию Discourse на страницу WP и автоматически добавлять нового пользователя в конкретную группу?

Я хочу разрешить определённой группе людей зарегистрироваться на моём Discourse. Предпочтительный сценарий следующий:

  1. Посетитель переходит на страницу WordPress или Discourse для регистрации, где вводит имя пользователя, email и пароль (если необходимо; учётная запись может быть создана автоматически).
  2. Пользователь добавляется в Discourse и одновременно включается в Группу.

Возможно ли реализовать это без использования Memberful?

Вы можете реализовать это, используя ваш сайт WordPress в качестве провайдера единого входа (SSO) для вашего сайта Discourse. Плагин WP Discourse содержит опцию «Провайдер SSO», которую можно использовать для настройки этого процесса.

Сложность заключается в добавлении пользователей в группы Discourse. Для этого с помощью плагина WP Discourse вам потребуется добавить некоторый код на ваш сайт WordPress. На этом форуме есть примеры кода, которые мы можем вам предоставить для добавления пользователей в группы, но вам также нужен способ определения, в какие именно группы Discourse должны быть добавлены пользователи WordPress. Один из способов решения этой задачи — установить плагин управления членством на ваш сайт WordPress, а затем добавлять пользователей в группы Discourse в зависимости от их уровня членства в WordPress.

Чтобы пользователи могли регистрироваться и автоматически добавляться в группы Discourse без необходимости написания вами дополнительного кода, вы можете рассмотреть плагин Discourse Patreon. Также хорошим вариантом является Memberful.

Вам нужно что-то вроде

if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
    add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
}
function wpdc_custom_sso_params( $params, $user ) {
    $groups = get_group_list_for_current_user();
    if ( strlen($groups) > 0 ) {
        $params['add_groups'] = $groups;
    }
    return $params;
}

это сработает. Функция get_group_list_for_current_user оставлена в качестве упражнения для читателя. :wink:

Если это не поможет и у вас есть бюджет, вы можете задать вопрос в Marketplace или связаться со мной.