WordPress API 传递电子邮件参数问题
WordPress API passing email argument issue
使用 WordPress REST API 自定义端点,我尝试使用 functions.php 文件中的以下代码获取用户数据(或至少是用户 ID):
function getUser(WP_REST_Request $request) {
global $wpdb;
$email = $request->get_param( 'email' );
$query = "SELECT * FROM wp_users WHERE user_email = $email";
$result = $wpdb->get_results($query);
return $result;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'myapi/v1', '/getcustomer/(?P<email>[^/]+)', array(
'methods' => 'GET',
'callback' => 'getUser'
) );
} );
正在使用端点 /wp-json/myapi/v1/getcustomer/joe@anymail.com 测试函数,它 returns 带有空括号 [ ]
。我在这里错过了什么吗?任何帮助将不胜感激。
您的代码存在多个问题:
- 您应该对您的用户电子邮件进行编码或通过 POST 方法发送。
- 您当前的查询开放给 SQL Injection
- 您的值必须用引号引起来。现在它转换为
.. WHERE user_email = joe@anymail.com
和 即 SQL 语法错误。
因此您的代码应如下所示:
$query = "SELECT * FROM wp_users WHERE user_email = %s";
$result = $wpdb->get_results($wpdb->prepare($query, $email));
使用 WordPress REST API 自定义端点,我尝试使用 functions.php 文件中的以下代码获取用户数据(或至少是用户 ID):
function getUser(WP_REST_Request $request) {
global $wpdb;
$email = $request->get_param( 'email' );
$query = "SELECT * FROM wp_users WHERE user_email = $email";
$result = $wpdb->get_results($query);
return $result;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'myapi/v1', '/getcustomer/(?P<email>[^/]+)', array(
'methods' => 'GET',
'callback' => 'getUser'
) );
} );
正在使用端点 /wp-json/myapi/v1/getcustomer/joe@anymail.com 测试函数,它 returns 带有空括号 [ ]
。我在这里错过了什么吗?任何帮助将不胜感激。
您的代码存在多个问题:
- 您应该对您的用户电子邮件进行编码或通过 POST 方法发送。
- 您当前的查询开放给 SQL Injection
- 您的值必须用引号引起来。现在它转换为
.. WHERE user_email = joe@anymail.com
和 即 SQL 语法错误。
因此您的代码应如下所示:
$query = "SELECT * FROM wp_users WHERE user_email = %s";
$result = $wpdb->get_results($wpdb->prepare($query, $email));