php - WordPress API 传递电子邮件参数
问题描述
如何接收来自休息路线的电子邮件?我想用 register_rest_route 注册一个用户。我需要来自 API 路由的三个参数(用户名、密码、电子邮件)。电子邮件参数的真正正则表达式是什么?
add_action('rest_api_init', function () {
register_rest_route('user/v2', 'register/(?P<name>[a-zA-Z0-9-]+)/(?P<password>[a-zA-Z0-9-]+)/(?P<email>[a-zA-Z0-9-]+)', [
'method' => 'PUT',
'callback' => 'user_create_callback',
'args' => [
'nema', 'email', 'password'
]
]);
});
function user_create_callback($args)
{
//smoe validation for entries here
wp_create_user( $args['name'], $args['password'], $args['email'] );
return ['status' => 'user created successfuly'];
}
解决方案
据我所知,您的代码中有几个问题。
- 你有一个错字
args
-nema
=>name
- 您正在使用
PUT
HTTP 方法,我们通常将其用于更新,在创建 REST 对象时,我们通常使用POST
. (您也可以使用WP_REST_SERVER::CREATABLE
常量 - 您通过查询字符串而不是使用请求正文(表单数据)传递参数
- 要验证电子邮件地址,您只需使用 WordPress
is_email()
功能。
将它们放在一起应该看起来像这样:
<?php
add_action('rest_api_init', function () {
register_rest_route('user/v2', 'register', [
'method' => WP_REST_SERVER::CREATABLE,
'callback' => 'user_create_callback',
'args' => array (
'name' => array (
'required' => true,
'sanitize_callback' => 'sanitize_text_field'
),
'password' => array (
'required' => true,
'sanitize_callback' => 'sanitize_text_field'
),
'email' => array (
'required' => true,
'validate_callback' => 'is_email'
)
)
]);
});
function user_create_callback($args)
{
wp_create_user( $args['name'], $args['password'], $args['email'] );
return ['status' => 'user created successfuly'];
}
?>
推荐阅读
- python - 熊猫 groupby 和地图值列表
- python - 使用 os.system 从 python 提示符执行命令
- c++ - 如何根据初始化参数修复类函数行为
- javascript - 开关盒不起作用并给出 0 值
- flutter - Flutter:无法发布但只能运行应用程序
- mysql - 有没有办法根据日期连接四个数据表?
- java - Java 中的嵌套集合(包含 String 键、arrayList 值的哈希图列表)
- javascript - 用于验证电话号码的 Javascript 正则表达式
- angular - 如何获得对 canActivate 进行验证的承诺的价值?
- linker-errors - 如何让 Linux 上的 Visual Studio Code 链接到共享库?