Voici mon problème.
J'ai une installation WordPress qui compte environ 30 utilisateurs avec des doublons de courriels dans la table des utilisateurs. Ça va, parce que c'est comme ça que je devais le faire pour le moment. Je souhaitais que les utilisateurs s'enregistrent avec exactement le même courrier électronique, car les parents devaient enregistrer leurs enfants dans le système et que leurs enfants ne possédaient aucune adresse électronique (il pouvait s'agir d'enfants âgés de 4 ans et plus).
Un exemple de base de données pourrait ressembler à
[email protected] (parent)
[email protected] (where this is child1 to parent)
[email protected] (where this is child2 to parent)
J'ai résolu ce problème temporairement (car je devais résoudre ce problème rapidement), mais j'aimerais maintenant que les utilisateurs puissent se connecter et modifier certains éléments de leur profil. Les noms d'utilisateur et les mots de passe sont créés et sont totalement uniques. Il est donc possible de se connecter, mais personne n'a reçu de nom d'utilisateur ou de mot de passe, car l'idée initiale ne leur permettait pas de se connecter.
Je pourrais résoudre le problème en envoyant les noms d'utilisateur et les mots de passe à l'utilisateur (parent et enfants du parent) à[email protected]
et passer en revue les 30 utilisateurs (parents) et faire de même.
Mais , mon problème est de savoir comment gérer les futurs enregistrements . Chaque utilisateur doit être unique car chaque utilisateur possède des champs personnalisés liés à lui-même.
Des idées?
UPDATE
Il s'agit d'enregistrer différents cours de danse. L'académie de danse veut savoir combien d'élèves (utilisateurs) il y a dans n'importe quel cours et veut garder la trace d'un utilisateur qui a payé le cours ou non. Parfois, l'utilisateur peut être défini comme réserve et parfois non. Pour compliquer davantage les choses, ce n'est pas toujours cette relation parent/enfant. Parfois, par exemple, un jeune de 18 ans veut s’inscrire à 3 cours de danse et l’utilisateur est un "enfant" (ou peut au moins gérer lui-même l’enregistrement).
IMHO vous prenez une mauvaise approche au problème.
Les utilisateurs sont uniques et doivent être uniques pour l'application "sanity".
Si vous pensez à la structure de votre site, vous avez des utilisateurs qui peuvent s'inscrire à des cours. Vous voulez avoir des "entrées" uniques pour chaque cours, et c'est légitime, mais pour ce faire, vous ne devez pas dupliquer les utilisateurs, mais créer une "entité" intermédiaire constituant une relation un à plusieurs avec les utilisateurs et un à un. beaucoup de relation aux cours.
Dans WordPress, lorsque vous avez besoin d’une "entité" générique, la solution consiste généralement à enregistrer un nouveau type de publication.
Supposons que vous enregistriez un type de message appelé "inscription".
Vous pouvez maintenant connecter les utilisateurs à l'enregistrement à l'aide du champ post_author
. Ainsi, chaque utilisateur peut avoir plusieurs enregistrements et chaque enregistrement appartient à un utilisateur.
L’enregistrement peut probablement comporter des méta-champs, par exemple. l'un d'eux peut être 'Nom de l'élève', où dans le cas où l'utilisateur est un parent qui enregistre un enfant, est renseigné avec le nom de l'enfant, dans le cas où l'utilisateur est un adulte qui souhaite s'inscrire à plus de cours, le nom de l'élève est son nom d'utilisateur.
Vous avez maintenant le problème de connecter ce nouveau type de message à des cours (qui sont probablement un autre CPT).
WordPress manque ici, car out-of-the-box n'est pas possible, connectez des publications à d'autres publications, mais vous pouvez résoudre le problème en utilisant un plugin tel que Posts2Posts Vous pouvez créer une relation par vous-même en utilisant un champ personnalisé (un type de champ '_course_id'
personnalisé pour le type de post d’enregistrement).
C'est la structure: vous avez des utilisateurs uniques avec des adresses électroniques, noms d'utilisateur et mots de passe uniques. Chaque utilisateur peut se connecter, gérer le profil, obtenir un nouveau mot de passe en cas d'oubli et toute autre fonctionnalité qu'un utilisateur devrait avoir.
En même temps, les utilisateurs peuvent avoir plusieurs inscriptions, une pour chaque cours.
De cette manière, vous pouvez savoir combien d'élèves vous avez par cours à l'aide d'un simple méta_query: type de post 'registration' où meta_key = '__course_id' et meta_value = $ a_course_id.
La création de cette structure est relativement facile, vous devez écrire l'interface utilisateur pour créer un nouvel enregistrement.
Si les utilisateurs ne devraient pas avoir la possibilité de s’inscrire, vous pouvez utiliser la page principale de création de type de message:
créer un nouveau post d'enregistrement -> associer l'auteur de post à l'utilisateur recherché -> utiliser une metabox pour sélectionner le cours correspondant.
Sinon, si vous voulez que les utilisateurs puissent créer un nouvel enregistrement, vous devez rendre le type de post d'enregistrement non public (masquer l'interface utilisateur par défaut) et créer une interface utilisateur personnalisée à cet effet.
C’est un peu de travail, mais votre application va beaucoup s’améliorer, la structure sera "saine" et vous pourrez facilement développer les fonctionnalités du site, par exemple. utiliser le plugin newletter pour contacter les utilisateurs (sans se soucier des e-mails en double), intégrer un plugin de caddie pour permettre le paiement en ligne des inscriptions, etc.