Meu site usa o DiscourseConnect Provider, então o WordPress gerencia os logins no Discourse.
Quando um usuário se registra no WordPress, eu gostaria que um usuário do Discourse fosse criado imediatamente para ele e que o e-mail de ativação do Discourse fosse enviado a ele. Mas isso não parece acontecer.
Verifiquei a opção “Sincronizar dados do usuário” nas configurações do WordPress.
Parece que a descrição diz que criará um usuário do Discourse quando eles fizerem login no WordPress. Mas não vejo isso acontecendo. O usuário do Discourse não é criado até que eles visitem o site do Discourse.
Minha integração não está funcionando corretamente? Ou estou interpretando mal essa descrição?
Entendi agora. Ele está criando um novo usuário do Discourse quando eles “fazem login” no WordPress. Ele não está criando um novo usuário quando eles “se registram” no WordPress. Nossos usuários podem se registrar e, no registro, eles são imediatamente considerados logados. Portanto, nesse ponto, eles estão logados, mas não têm um usuário do Discourse.
Se eles saírem do WP e fizerem login novamente no WP, um usuário do Discourse será criado. Acabei de verificar isso.
Não exigimos que os e-mails sejam verificados no WordPress porque é um site WooCommerce e ele os registra automaticamente se eles fizerem uma compra enquanto não estiverem logados. Na primeira vez que eles visitam o Discourse após serem registrados, eles recebem o e-mail de verificação de endereço do Discourse.
Os usuários problemáticos são aqueles que ambos:
Registram-se no WP, mas não saem e fazem login novamente
Nunca visitam o Discourse (que é nosso site de suporte para o site de comércio eletrônico)
O WordPress/WooCommerce trata o autorregistro como um login - eles são considerados logados imediatamente após o registro. Existe alguma maneira de fazer com que um usuário do Discourse seja criado quando eles se registram e não apenas quando eles saem e fazem login novamente?
Olá Ryan, você está certo que o plugin está criando um usuário após o login. Especificamente, o plugin está usando o hook wp_login. Existe também um hook user_register no WordPress, no entanto, o motivo pelo qual o plugin não o utiliza é porque ele é acionado imediatamente após a inserção de um registro no banco de dados do WordPress, independentemente de os detalhes do usuário (em particular o e-mail) serem verificados.
Para ser um pouco atrevido, acho que a pergunta aqui pode ser por que o WooCommerce não aciona o hook wp_login se for esse o caso Mas, de forma mais útil, provavelmente existe algum outro hook ou filtro que o WooCommerce aciona imediatamente após o registro e o login, se é isso que ele está fazendo.
O motivo pelo qual ainda não incluímos isso no plugin é porque, como você pode ver no seu caso, existem muitas maneiras diferentes de usuários serem criados/registrados/logados no WordPress.
Mas vamos ver se conseguimos fazer o seu caso específico funcionar. Primeiro, precisamos encontrar um hook que seja acionado imediatamente após o seu registro/auto-login estar acontecendo. Você pode confirmar exatamente como você configurou isso? Ou seja, exatamente qual fluxo você está usando. Quanto mais específico, melhor, por exemplo, qualquer documentação que você usou.
Suspeito que o WooCommerce seja o que está causando a confusão. Parece que o login automático após o registro é um recurso do WooCommerce, não do WordPress. E eles intencionalmente não disparam as ações de login.
Posso procurar um hook apropriado do WooCommerce para usar para isso. Existe uma função do WP Discourse que posso chamar ou um hook que posso disparar para criar o usuário do Discourse se eu encontrar o hook correto do WooCommerce?