WordPress REST API-仅当使用REST API时,允许创建具有相同电子邮件地址的用户

时间:2022-02-18 作者:The Oracle

我正在开发一个新的wordpress网站,我想创建多个具有相同电子邮件地址的用户。这样做的目的是将多个客户服务帐户发送到一封普通电子邮件,作为整合的手段。

我首先在rest api中注册了一个电子邮件字段,因为默认rest api设置中不包括电子邮件字段。

因此,在我的函数中添加了以下代码。php文件:

register_rest_field( \'user\', \'user_email\',
                        array(
                            \'get_callback\'    => function ( $user ) {
                                return get_userdata($user[\'id\'])->user_email;
                            },
                            \'schema\'          => null,
                        )
                    );
                
然后,我使用python发出2个简单的post请求,用相同的电子邮件创建2个帐户,如下所示:

import base64
import requests
import json

url=\'https://mywebsite.com/wp-json/wp/v2/users\'

from Load_Credentials import user,password

credentials = user + \':\' + password
token = base64.b64encode(credentials.encode())
header = {\'Authorization\': \'Basic \' + token.decode(\'utf-8\'),\'Content-Type\': \'application/json\',\'User-Agent\': \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\'}


#first POST request with same email
x1={"username": "newuser1","email":"[email protected]","password":"check123"}
x1=json.dumps(x1)
x1=json.loads(x1)
r1=requests.post(url+\'?status=publish\',headers=header,json=x1)

#second post request with same email
x2={"username": "newuser2","email":"[email protected]","password":"check123"}
x2=json.dumps(x2)
x2=json.loads(x2)
r2=requests.post(url+\'?status=publish\',headers=header,json=x2)
这是我得到的回应:

{\'code\': \'existing_user_email\', \'message\': \'Sorry, that email address is already used!\', \'data\': None}
是否有一种方法允许仅在使用rest api时使用相同的电子邮件创建2个帐户。(正常注册程序应继续标记重复的电子邮件)

我感谢你在这件事上的支持。

1 个回复
SO网友:Sébastien Serre

我认为这是不可能的。无论是否使用rest API,都不要改变WordPress在https://github.com/WordPress/wordpress-develop/blob/5.9/src/wp-includes/user.php#L2032