Вы можете обновлять пользовательские поля, созданные вами в 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
}
]
}
Пользовательские поля в Discourse именуются как user_field_<id_поля>. Это означает, что имя поля «News Letter» из приведённого выше примера — user_field_12, а имя поля «Company» — user_field_13. Используйте эту информацию для обновления полезной нагрузки SSO.
В качестве примера, с использованием фильтра wpdc_sso_params, о котором я упоминал в предыдущем посте, следующий код, добавленный в файл functions.php вашей темы, установит значение поля «Company» для всех пользователей в «acme» при входе через SSO. Замените 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 функции для получения информации о ваших пользователях.