当用户没有任何电子邮件时,处理WordPress中的注册?

时间:2014-01-28 作者:bestprogrammerintheworld

这是我的问题。

我有一个WordPress安装,大约有30个用户,在用户表中有重复的电子邮件。没关系,因为这是我目前必须做的。我希望用户使用完全相同的电子邮件进行注册,因为家长必须将孩子注册到系统中,而他们的孩子没有任何电子邮件地址(可能是4岁以上的孩子)。

数据库示例如下所示

[email protected] (parent)
[email protected] (where this is child1 to parent)
[email protected] (where this is child2 to parent)
我暂时解决了这个问题(因为我必须尽快修复),但现在我希望用户能够登录并更改其个人资料中的一些内容。用户名和密码是创建的,并且是完全唯一的,因此可以登录-但没有人收到用户名或密码,因为最初的想法是不给他们登录的能力。

我可以通过向用户(家长和家长的孩子)发送用户名和密码来解决这个问题[email protected] 并检查所有30个用户(家长)并执行同样的操作。

但是my issue lays in how to handle future registrations. 每个用户必须是唯一的,因为每个用户都有一些与自身相关的自定义字段。

有什么想法吗?

UPDATE

这是关于注册不同的舞蹈课程。舞蹈学院希望跟踪任何课程中有多少学生(用户),并希望跟踪用户是否支付了课程费用。有时用户可以设置为保留,有时不可以。更复杂的是,父母/孩子之间的关系并不总是这样。有时-假设一个18岁的孩子想注册3个舞蹈课程,而用户是“孩子”(或者至少可以自己处理注册)

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

我知道你在这个问题上态度不好。

用户是唯一的,并且对于应用程序“健全性”来说应该是唯一的。

如果你想在你的网站结构,你有用户可以注册课程。您希望每个课程都有唯一的“条目”,这是合法的,但要做到这一点,您不应该复制用户,而应该创建一个中介“实体”,作为与用户的一对多关系和与课程的一对多关系。

在WordPress中,当您需要一个通用的“实体”时,解决方案主要是注册一个新的帖子类型。

假设您注册了一个名为“registration”的post类型。

现在,您可以使用将用户连接到注册post_author 字段,这样每个用户都可以有多个注册,并且每个注册都属于一个用户。

可能,注册可以有一些元字段,例如,其中一个可以是“学生名”,如果用户是注册孩子的家长,则填写孩子名,如果用户是想申请更多课程的成年人,则学生名为jsut用户名。

现在,您在将此新职位类型与课程(可能是另一个CPT)连接时遇到了问题。

WordPress在这里有一个缺陷,因为开箱即用不可能将帖子连接到其他帖子,但您可以使用以下插件解决问题Posts2Posts 或者使用自定义字段(类似于\'_course_id\' 注册职位类型的自定义字段)。

这就是结构:你有唯一的用户,拥有唯一的电子邮件、用户名和密码。每个用户都可以登录、管理配置文件、忘记时获取新密码以及用户应该具有的任何其他功能。

同时,用户可以有多个注册,每个课程一个。

通过这种方式,您可以使用一个简单的meta\\u查询了解每门课程有多少学生:“注册”post type,其中meta\\u key=“\\u course\\u id”,meta\\u value=$a\\u course\\u id。

创建此结构相对容易,您需要编写的是创建新注册的UI。

如果用户无法自行注册,可以使用核心帖子类型创建页面:

创建新注册帖子->将帖子作者设置为所需用户->使用元框选择相关课程。

否则,如果希望用户能够创建新的注册,则必须将注册帖子类型设置为非公共(隐藏默认UI),并为此创建自定义UI。

这需要做一些工作,但你的应用程序会有很大的改进,结构也会“合理”,你可以轻松地扩展网站功能,例如使用newletter插件联系用户(无需担心重复的电子邮件),集成一些购物车插件以允许在线支付注册费用,等等。

结束

相关推荐

Wordpress SMTP EMail

我在wordpress上有一个已经配置好的类phpmailer的插件。php通过SMTP发送电子邮件。我的主机只接受SMTP电子邮件。当我在wordpress中注册时,我会收到一封电子邮件,当我联系另一个用户时,他会收到电子邮件。这没关系。但当我尝试使用这个插件时,他没有发送任何电子邮件。你能帮帮我吗?提前谢谢你 <?php ini_set(\'display_errors\',true); ini_set(\'memory_limit\', \'128M\');