web-dev-qa-db-fra.com

Importer 10 000 utilisateurs dans Wordpress avec un identifiant spécifique pour chaque utilisateur

J'ai un site Web qui compte environ 10 000 utilisateurs. Je suis en train de convertir ce site en Wordpress. Le nouveau site est prêt à être lancé, mais je dois amener tous les utilisateurs.

Il existe un certain nombre de plugins disponibles pour importer des utilisateurs à partir d'un fichier CSV, et j'ai le fichier CSV prêt à l'emploi. Le plugin que j'aimerais utiliser est le suivant:

Importer des utilisateurs depuis CSV

La raison pour laquelle je souhaite utiliser ce plugin est qu'il offre la possibilité d'importer un fichier CSV contenant les identifiants de l'utilisateur. Malheureusement, le plug-in est actuellement conçu pour que, si des ID sont présents dans le fichier CSV, il suppose que ces utilisateurs existent déjà dans votre base de données Wordpress et que vous essayez de "mettre à jour" ces enregistrements.

Je ne suis pas. J'essaie de créer de NOUVEAUX utilisateurs dans la base de données, mais avec des identifiants spécifiques (car ces identifiants sont liés à un autre système et je ne veux pas que ces perdants perdent l'accès à toutes ces autres informations en raison d'un changement d'identifiant de l'ancien système au nouveau.

Il semble que le plugin ci-dessus soit peut-être un pontage des fonctions intégrées de Wordpress pour l’enregistrement ou la mise à jour des utilisateurs, ce qui peut être le problème.

Comment puis-je atteindre mon objectif avec le moins de temps possible?

BTW - Je suis assez à l'aise dans phpmyadmin, alors ça ne me dérange pas de le faire là-bas, le seul problème est que je veux m'assurer que tous les utilisateurs reçoivent un e-mail les notifiant et leur fournissant leur nouveau mot de passe (car je ne peux pas les déplacer ). En utilisant le plugin, c'est automatique. Sans cela, pas trop.

Merci pour toute aide.

2
Michael

Je ne suis pas familier avec le plugin, mais cela pourrait être une option pour le contourner:

  1. Importez les identifiants dans la base de données directement à l'aide de SQL (phpMyAdmin).
  2. Utilisez le plug-in pour importer le fichier CSV et exécutez la "mise à jour" sur ces utilisateurs existants afin qu'ils reçoivent leur mot de passe mis à jour.
1
Andrew Vit

C'est la réponse à laquelle j'ai fait allusion ci-dessus dans mon commentaire.

Tout d'abord, je devrais dire que l'article d'Andrew "peut-être utile" a été publié hier, mais je ne l'ai pas fait de cette façon.

Quoi qu'il en soit, vous devez insérer des enregistrements dans votre table wp_users contenant tous les identifiants des membres que vous souhaitez importer (j'ai également inclus les noms d'utilisateur, mais je ne suis pas sûr que cela soit nécessaire).

Ensuite, utilisez le plug-in Import Users from CSV que j'ai référencé dans ma question initiale pour importer le nom d'utilisateur, l'adresse e-mail et le rôle de vos utilisateurs (ainsi que tous les autres champs que vous souhaitez importer. Le plug-in contient des instructions à cet effet).

Pour leur attribuer un rôle spécifique lors de l'importation, ajoutez simplement une colonne à votre fichier CSV appelée "rôle", puis indiquez dans chaque colonne le rôle de "abonné", "auteur", etc. dans cette colonne.

Je crois que vos "rôles" doivent être entrés en minuscules. C'est comme ça que je l'ai fait. D'autres ont indiqué que si la première lettre était en majuscule, cela ne fonctionnerait pas.

Assurez-vous que les identifiants sont inclus dans ce fichier CSV afin que le plug-in sache quels enregistrements mettre à jour dans la base de données avec les nouvelles informations.

Voici un exemple de quelques enregistrements de mon fichier CSV afin que vous puissiez voir comment il est structuré:

"ID","user_login","user_email","role","another_field","another_field_2"
"5094","username5094","[email protected]","subscriber","another_field_value","another_field_2_value"
"5095","username5095","[email protected]","subscriber","another_field_value","another_field_2_value"

++++++++++ AVIS +++++++++++

Lorsque j'ai initialement posté cette réponse, j'ai omis d'indiquer que j'avais apporté une petite modification au plug-in "Import Users from CSV". Dans votre administrateur Wordpress, sous la section "plugins", choisissez le lien "Editeur". Ensuite, utilisez la liste déroulante en haut à droite pour sélectionner le plug-in approprié (le plug-in Import Users from CSV).

À peu près au milieu du fichier php, il y a quelques lignes séparées par environ 10 à 15 lignes.

Le premier est:

if ( $update )

J'ai commenté cette ligne et l'ai modifiée pour que le code de cette ligne ressemble maintenant à ceci:

/* if ( $update )   */
if (1==0)

Ensuite, la deuxième ligne que vous allez modifier (environ 10 à 15 lignes sous la dernière) est la suivante:

if ( ! $update ) {

Ce que j'ai changé pour:

/* if ( ! $update ) {  */
if ( 1==1 ) {

Cela garantit que tous les utilisateurs que vous importez recevront leurs courriels de bienvenue avec le nouveau nom d'utilisateur et le nouveau mot de passe.

+++++++++ END AVIS ++++++++++

J'ai constaté que je ne pouvais importer qu'environ 150 utilisateurs à la fois sans erreur de serveur, ce qui n'était pas idéal, car j'ai des milliers d'utilisateurs à importer. Mais, je ne pense pas que ce soit une limitation du plugin, mais bien les paramètres de mon serveur et/ou de la mémoire disponible.

Si vous avez coché les cases appropriées, chaque utilisateur importé recevra un "nouvel utilisateur" de la part de votre Wordpress, y compris son nom d'utilisateur et son mot de passe pour la connexion. Donc, vous aurez besoin de chiffrer immédiatement les mots de passe contenus dans leurs enregistrements, sinon ils ne fonctionneront pas lorsqu'ils essaieront de se connecter.

Personnellement, je voudrais importer des utilisateurs, puis lancer ma requête de chiffrement. Importez ensuite d'autres utilisateurs, puis lancez ma requête de chiffrement. De cette façon, il ne s'est jamais écoulé plus d'une minute environ entre le "courrier électronique de bienvenue" que les utilisateurs recevraient et le chiffrement de leur mot de passe pour que la connexion puisse fonctionner.

Une fois que vous avez importé tout ou partie des utilisateurs. Ensuite, utilisez la solution Andrews ci-dessus avec "WHERE CHAR_LENGTH (wp_users.user_pass) = 12". Puisque Wordpress va attribuer à tous vos nouveaux utilisateurs un mot de passe de 12 chiffres lorsque vous les importez avec le plug-in, ce sont ceux que vous souhaitez mettre à jour avec la version cryptée, et c'est ce que la partie "WHERE" de cette requête contient Il est possible que votre situation n’exige pas l’utilisation de cette partie "WHERE", mais cela ne fera pas de mal de la laisser là, si vous n’êtes pas sûr.

La prochaine fois que ces personnes se connecteront à votre blog Wordpress, Wordpress modifiera le cryptage de ces mots de passe en fonction de la nouvelle méthode de cryptage. L'utilisateur ne saura pas la différence.

Et, pour ceux qui sont curieux de savoir quelle méthode j'ai réellement utilisée à la place d'Andrew, j'ai créé un fichier PHP contenant le code suivant:

<?php 
require_once '/home/evaluate/public_html/members-blog/wp-config.php';

$sql="SELECT user_pass,ID FROM wp_users WHERE CHAR_LENGTH(wp_users.user_pass) = 12";
$find = mysql_query($sql) or die(mysql_error());

  while($row = mysql_fetch_array($find))
  {

  $current_password = $row['user_pass'];
  $current_id = $row['ID'];
  $hashed_password = wp_hash_password( $current_password );

  $update_sql= "UPDATE wp_users SET user_pass = '" . $hashed_password . "' WHERE ID = " . $current_id . "";
  $update = mysql_query($update_sql) or die(mysql_error());  

  echo $current_id . " " . $hashed_password;
  echo "<br />";
  }

 ?>

Ensuite, une fois que certains utilisateurs ont été importés via le plug-in, je récupérais l'URL de ce fichier php dans mon navigateur pour le lancer.

Ce fichier php utilise la propre méthode de cryptage de Wordpress en se connectant au fichier de configuration de Wordpress (la déclaration "require_once"). Cela le connecte également à la base de données correcte. Il saisit chaque utilisateur de la table wp_users qui possède un mot de passe non chiffré (tout mot de passe non chiffré dans la table ne contient que 12 caractères), chiffre le mot de passe puis met à jour cet enregistrement avec la nouvelle version chiffrée du mot de passe. Enfin, il fait écho à l'identifiant de l'utilisateur qu'il vient de mettre à jour avec la version chiffrée du mot de passe.

Ce processus se poursuit en boucle jusqu'à ce que tous les utilisateurs de la base de données avec un mot de passe non crypté aient été cryptés. À la fin, vous aurez une impression affichée sur votre écran qui affiche tous les ID utilisateur qui ont été mis à jour et la version cryptée du mot de passe (pour que vous ayez une preuve de ce qui a été fait).

C’est également intéressant, car si le script meurt avant d’avoir terminé tous les enregistrements, il vous suffit d’actualiser la page pour la réexécuter. Comme il ne met à jour que les enregistrements qui n'ont pas encore été cryptés, il reprend juste là où il s'est arrêté.

J'espère que ça aide quelqu'un. Si vous avez des questions au-dessus du processus, faites-le moi savoir. Je vais essayer d'élaborer le mieux possible.

3
Michael

Voici comment j'ai fait le travail:

  • Utilisez export CSV pour exporter vos membres
  • Importer dans Excel
  • Vérifier le dernier identifiant de votre nouveau site
  • Sélectionnez la colonne ID dans votre feuille Excel
  • Appuyez sur le bouton de suppression
  • Remplissez "ID" sur la première ligne
  • Deuxième ligne, tapez le premier numéro d'identification suivant.
  • Faites glisser le coin en bas à droite quelques-uns pour faire apparaître quelques ID pour les premiers membres
  • Sélectionnez ces identifiants
  • Double-cliquez sur le dernier identifiant en bas à droite.
  • Maintenant, tous les champs d'ID doivent être remplis correctement
  • Exporter au format CSV encore une fois
  • Importer avec les utilisateurs Importation CSV, veillez à sélectionner l'option de mot de passe Nag

Terminé!

0