J’ai utilisé un script Discourse et migré des données phpBB vers Discourse, j’ai maintenant déplacé mon site vers WordPress et j’ai besoin de migrer certaines données utilisateur. J’ai créé des champs utilisateur personnalisés dans Discourse et utilisé ce hook “wpdc_sso_params” pour migrer les données des champs personnalisés.
mais le problème est que cela synchronise les données lorsque l’utilisateur se connecte. Si certains utilisateurs ne se connectent pas à nouveau ou si les données des utilisateurs expirés ne sont pas migrées de cette manière.
existe-t-il un hook ou un script qui peut migrer toutes les données utilisateur en une seule fois ?
autre chose, comme nous mappons des champs personnalisés, comment puis-je mapper les champs nom complet, prénom et nom de famille ? comme nous pouvons définir un avatar personnalisé en utilisant ce hook “wpdc_sso_avatar_url”.
Si le plugin WP Discourse est activé sur votre site WordPress, vous pouvez écrire un script qui parcourt tous les utilisateurs de votre site et appelle la fonction sync_sso_record avec les paramètres SSO pour chaque utilisateur que vous souhaitez mettre à jour :
Cela fait un moment que j’ai essayé de faire cela. Testez-le avec un utilisateur avant d’essayer de parcourir tous les utilisateurs du site.
Vous pourriez utiliser le champ external_name de Discourse pour le nom complet. Le nom que vous définissez avec le champ external_name deviendra le nom de l’utilisateur sur Discourse. Si vous avez besoin de champs séparés pour le prénom et le nom de famille, vous devrez créer des champs personnalisés pour eux sur Discourse.
Faites-moi savoir si vous rencontrez des problèmes avec cela. Je peux essayer de tester cela demain.
@simon
Ceci me donne une erreur fatale lors de l’utilisation de
WPDiscourse\Utilities\PublicPluginUtilities::sync_sso_record($sso_params_array, $myuser->ID);
PHP Fatal error: Uncaught Error: Call to undefined method WPDiscourse\Utilities\PublicPluginUtilities::sync_sso_record()
Le plugin wp discourse est actif et le sso fonctionne correctement.
J’ai essayé
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
DiscourseUtilities::sync_sso_record($sso_params, 3992);
de cette façon, il ne donne pas d’erreur fatale, mais les données des champs personnalisés ne sont pas enregistrées dans discourse.
renvoie cette erreur
WP_Error Object ( [errors] => Array ( [wpdc_response_error] => Array ( [0] => Une réponse invalide a été retournée par Discourse ) ) [error_data] => Array ( [wpdc_response_error] => Array ( [http_code] => 422 [http_body] => {“failed”:“FAILED”,“message”:“The external_id is required but was blank”} ) ) [additional_data:protected] => Array ( ) )
Tout le monde ici fait de son mieux pour aider à résoudre les problèmes. Simon vous aide et est automatiquement informé des réponses, sauf s’il a désactivé les notifications.
Il n’est donc pas nécessaire de le @mentionner et de faire remonter un sujet, surtout après avoir attendu moins de 3 heures seulement. Merci de faire preuve de patience à cet égard
Désolé pour l’erreur dans le code que j’ai fourni. Je lisais mal le code du plugin. La façon dont vous appelez la fonction est correcte. Ceci devrait également fonctionner :