Мой сайт использует DiscourseConnect Provider, поэтому WordPress управляет входом в Discourse.
Когда пользователь регистрируется в WordPress, я хотел бы, чтобы для него сразу создавался пользователь Discourse и ему отправлялось письмо с активацией Discourse. Но, похоже, этого не происходит.
Я проверил настройку «Синхронизировать данные пользователя» в настройках WordPress.
Кажется, что в описании сказано, что пользователь Discourse будет создан при входе в WordPress. Но я не вижу этого. Пользователь Discourse создаётся только тогда, когда он посещает сайт Discourse.
Неправильно ли работает моя интеграция? Или я неправильно понимаю это описание?
Теперь я понял. Создаётся новый пользователь Discourse, когда они «входят» в WordPress, а не когда они «регистрируются» в WordPress. Наши пользователи могут зарегистрироваться самостоятельно, и при регистрации они сразу считаются вошедшими в систему. Таким образом, в этот момент они уже авторизованы, но у них ещё нет учётной записи в Discourse.
Если они выходят из WP и снова входят в WP, то создаётся учётная запись в Discourse. Я только что это проверил.
Мы не требуем подтверждения email в WordPress, поскольку это сайт на WooCommerce, и он автоматически регистрирует пользователей, если они совершают покупку, не будучи авторизованными. При первом посещении Discourse после регистрации они получают от Discourse письмо с подтверждением адреса.
Проблемные пользователи — это те, кто:
Зарегистрировался в WP, но не выходил и не входил снова
Никогда не посещал Discourse (который является нашей службой поддержки для интернет-магазина)
WordPress/WooCommerce рассматривает самостоятельную регистрацию как вход в систему — пользователи считаются авторизованными сразу после регистрации. Есть ли способ сделать так, чтобы учётная запись в Discourse создавалась при самостоятельной регистрации, а не только при выходе и повторном входе?
Привет, Райан, вы правы: плагин создаёт пользователя после входа. В частности, плагин использует хук wp_login. В WordPress также есть хук user_register, однако плагин не использует его, потому что он срабатывает сразу после вставки записи в базу данных WordPress, независимо от того, подтверждены ли данные пользователя (в частности, его адрес электронной почты).
С небольшой долей иронии можно спросить: почему же WooCommerce не срабатывает хук wp_login, если это действительно так Но если говорить более полезно, то, скорее всего, существует другой хук или фильтр, который WooCommerce срабатывает сразу после регистрации и входа, если это действительно происходит.
Причина, по которой мы пока не внедрили эту функцию в плагин, заключается в том, что, как вы могли заметить на своём примере, существует множество различных способов создания/регистрации/входа пользователей в WordPress.
Но давайте попробуем настроить ваш конкретный случай. Сначала нам нужно найти хук, который срабатывает сразу после вашей регистрации/автоматического входа. Можете ли вы точно описать, как у вас настроена эта часть? То есть, какой именно сценарий вы используете. Чем конкретнее, тем лучше, например, любая документация, которой вы пользовались.
Я подозреваю, что именно WooCommerce вызывает путаницу. Похоже, что автоматический вход после регистрации — это функция WooCommerce, а не WordPress. И они намеренно не запускают действия входа.
Я могу поискать подходящий хук WooCommerce для этого. Есть ли у WP Discourse функция, которую я могу вызвать, или хук, который я могу запустить, чтобы создать пользователя Discourse, если найду нужный хук WooCommerce?