Плагин WP Discourse позволяет настроить DiscourseConnect в WordPress, чтобы ваши пользователи могли использовать свою учётную запись WordPress для входа в Discourse или свою учётную запись Discourse для входа в WordPress. Прежде чем настроить DiscourseConnect, сначала необходимо установить плагин WP Discourse на WordPress и подключить его к вашему Discourse. Если вы готовы начать, посмотрите короткое видео или следуйте инструкциям ниже.
Следующий шаг
После настройки DiscourseConnect вы можете ознакомиться со следующими темами:
Инструкции
Настройка секретного ключа
Независимо от того, настраиваете ли вы WP Discourse как провайдера или клиента DiscourseConnect, вам необходимо установить секретный ключ. Перейдите на вкладку «DiscourseConnect Secret Key» и введите строку текста (допускаются цифры, буквы и символы) длиной не менее 10 символов. Используйте те же правила создания, что и для надёжного пароля. Обязательно сохраните его после завершения.
Затем откройте настройки сайта Discourse (в панели администратора) и выполните поиск по запросу «discourse connect». Одно из настроек в верхней части будет называться discourse connect secret. Вставьте туда секретный ключ, установленный в WP Discourse, и нажмите зелёную галочку.
Вход в Discourse с помощью WordPress (провайдер DiscourseConnect)
Убедитесь, что ваш WP Discourse подключён к Discourse и секретный ключ настроен (
), прежде чем следовать этим инструкциям.
Чтобы пользователи могли входить в Discourse, используя учётные данные WordPress, необходимо настроить WP Discourse как провайдера DiscourseConnect. Перейдите на вкладку DiscourseConnect Provider в настройках WP Discourse, установите флажок Enable DiscourseConnect Provider и сохраните настройки.
Далее перейдите в настройки сайта Discourse, введите «discourse connect» в поле поиска, чтобы увидеть все настройки DiscourseConnect. Сначала установите значение discourse connect url равным URL-адресу вашего WordPress. Последний шаг — выбрать enable discourse connect. Убедитесь, что вы готовы к работе, прежде чем выбрать эту опцию, так как после этого пользователи смогут входить в Discourse только через WordPress.
После включения DiscourseConnect в Discourse, чтобы убедиться, что всё настроено правильно, откройте окно в режиме инкогнито в вашем браузере. Оставьте обычное окно (не инкогнито) браузера с входом в учётную запись администратора (на случай, если что-то пойдёт не так и вам потребуется вернуть настройки). В окне инкогнито вы заметите, что кнопка «Sign Up» в Discourse больше не отображается. Нажмите кнопку «Log In». Вы должны увидеть экран входа в WordPress. Введите свои учётные данные WordPress для входа. После этого вы должны быть перенаправлены обратно в Discourse и авторизованы.
Если что-то пойдёт не так или вы заметите какие-либо несоответствия, вернитесь в обычное окно браузера и отключите enable discourse connect, чтобы пользователи могли входить в Discourse обычным способом. Если по какой-то причине вы больше не авторизованы в учётной записи администратора в обычном окне браузера, ознакомьтесь с разделом «Отключение DiscourseConnect через консоль Discourse» в разделе устранения неполадок ниже, чтобы восстановить доступ к вашему Discourse.
Подтверждение электронной почты
Discourse ожидает, что все адреса электронной почты пользователей будут подтверждены, а WordPress не требует от пользователей подтверждения адреса электронной почты. В стандартной настройке WordPress довольно легко подтвердить адрес электронной почты пользователя в процессе регистрации, но если сайт использует плагин, создающий форму регистрации на фронтенде (например, форму регистрации, которую можно добавить с помощью WooCommerce), плагин WP Discourse не сможет подтвердить адрес электронной почты пользователя.
Если адреса электронной почты пользователей не подтверждаются в WordPress, прежде чем пользователь WordPress сможет войти на форум, ему потребуется ответить на уведомление о подтверждении электронной почты, отправленное Discourse. Плагин содержит несколько фильтров, которые можно использовать для переопределения этого поведения. Изучите код, начиная здесь, для получения подробной информации.
Удаление флага require_activation
Если вы уверены, что WordPress проверяет адреса электронной почты, вы можете сообщить Discourse, что ему это не нужно. Чтобы полностью удалить флаг require_activation, добавьте что-то подобное в ваш WordPress (например, в файл functions.php вашей темы):
// Замените 'my_prefix' на префикс вашего сайта.
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
return false;
}
Чтобы удалить флаг require_activation для конкретных пользователей, используйте что-то подобное:
// Замените 'my_prefix' на префикс вашего сайта.
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
$user = get_userdata( $user_id );
if ( /* какое-то условие, проверяемое для $user */ ) {
return true;
}
return false;
}
Веб-хук Userdata
Этот веб-хук существует по историческим причинам — автоматическое заполнение поля имени в Discourse теперь можно выполнить с помощью опции провайдера DiscourseConnect «Create or Sync Discourse Users on Login».
Веб-хук Update Userdata (в панели настроек «Webhooks») можно использовать, когда WordPress является провайдером DiscourseConnect для вашего Discourse. Веб-хук автоматически заполняет поле имени пользователя в Discourse на WordPress.
Создание ссылки для входа DiscourseConnect
Если у вас включена опция провайдера DiscourseConnect, вы можете добавить ссылку для входа DiscourseConnect на свой сайт WordPress, создав ссылку со следующей структурой:
<a href="https://discourse.example.com/session/sso?return_path=/">Community</a>
Установите значение return_path равным странице на вашем форуме, на которой вы хотите, чтобы пользователь оказался. Вы можете добавить ссылку для входа SSO в меню WordPress, добавив URL-адрес с такой структурой как «Custom Link» в разделе «Меню» панели управления WordPress.
Вход в WordPress с помощью Discourse (клиент DiscourseConnect)
Чтобы ваш сайт функционировал как клиент DiscourseConnect для Discourse, перейдите на вкладку DiscourseConnect Client. На этой странице выберите опции Enable DiscourseConnect Client и Add Login Link.
Теперь перейдите на страницу администратора/настроек Discourse и выполните поиск по запросу «discourse connect», чтобы увидеть все опции DiscourseConnect.
- выберите настройку «enable discourse connect provider»
- скопируйте ваш
DiscourseConnect Secret Keyиз WordPress в поле «secret» настройки «discourse connect provider secrets» в Discourse. В поле «domain» этой настройки введите домен вашего сайта WordPress. Затем нажмите зелёную галочку, чтобы сохранить настройки.
После завершения настройка «discourse connect provider secrets» в Discourse должна выглядеть следующим образом (с доменом, установленным в домен вашего WordPress):
Теперь Discourse должен функционировать как провайдер DiscourseConnect для вашего сайта WordPress.
Откройте свой сайт WordPress в окне браузера в режиме инкогнито. Когда вы перейдёте на страницу входа, вы должны увидеть ссылку «Log in with Discourse» под формой входа. Нажмите на неё, и вы будете перенаправлены на форму входа в Discourse. Войдите там, и вы будете перенаправлены обратно на страницу входа WordPress с уведомлением о необходимости синхронизации вашей учётной записи с Discourse. Следуйте инструкциям в уведомлении для связывания учётных записей, и вы сможете войти в свой сайт WordPress через Discourse.
Примечание: это поведение влияет только на пользователей, у которых уже есть учётные записи как в WordPress, так и в Discourse. Новые учётные записи WordPress, созданные через DiscourseConnect, смогут свободно входить в WordPress при первом нажатии на ссылку «Log in with Discourse». Чтобы упростить вход через Discourse для пользователей, у которых уже есть учётные записи как на вашем сайте WordPress, так и на вашем форуме Discourse, выберите флажок Sync Existing Users by Email на вкладке опций DiscourseConnect Client.
Синхронизация выхода из Discourse
Когда DiscourseConnect включён, выход из Discourse можно синхронизировать с вашим сайтом WordPress, добавив home_url вашего сайта с параметром запроса request=logout в настройку сайта Discourse logout redirect. Эта настройка находится в разделе настроек Discourse по адресу /admin/site_settings/category/users. Вот пример URL-адреса «logout redirect»:
http://example.com/?request=logout
Устранение неполадок
Если у вас возникли проблемы с использованием WordPress в качестве провайдера DiscourseConnect для вашего форума, сначала проверьте следующее:
- совпадают ли секретные ключи DiscourseConnect, установленные в WordPress и Discourse
- выбрано ли у вас на сайте WordPress
Enable DiscourseConnect Provider - введён ли правильный
discourse connect urlв Discourse.
Ошибка «Login Error» при использовании DiscourseConnect
Если пользователи получают сообщение «Login Error» при попытке входа в Discourse, ознакомьтесь с:
Debug and fixing common DiscourseConnect issues.
Отключение DiscourseConnect
Если DiscourseConnect не работает, вы можете отключить его, отключив настройку сайта enable discourse connect. Если вы не авторизованы в учётной записи администратора где-либо, чтобы отключить его, не беспокойтесь — есть несколько способов вернуться и отключить его.
Вход через /users/admin-login
Откройте новое окно браузера и введите URL-адрес вашего форума в адресной строке, добавив /users/admin-login, например:
https://community.mysite.com/users/admin-login
Вы увидите поле ввода, запрашивающее адрес электронной почты администратора. После отправки адреса электронной почты вы получите письмо со ссылкой, которая позволит вам войти напрямую в учётную запись администратора. Затем перейдите в настройки сайта и отключите enable discourse connect, чтобы выключить DiscourseConnect.
Если это не сработает по какой-то причине, не беспокойтесь — вы всё равно сможете отключить DiscourseConnect через консоль сервера (
)
Отключение DiscourseConnect через консоль сервера
Если вы не знаете, что такое консоль сервера, или у вас нет к ней доступа, обратитесь за помощью к вашему хостинг-провайдеру. После подключения к серверу по SSH выполните следующие команды:
cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit







