【问题标题】:WordPress API passing email argument issueWordPress API 传递电子邮件参数问题
【发布时间】:2022-01-24 14:23:30
【问题描述】:

使用 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 测试函数,它返回空括号 [ ]。我在这里错过了什么吗?任何帮助将不胜感激。

【问题讨论】:

    标签: wordpress-rest-api


    【解决方案1】:

    您的代码存在多个问题:

    1. 您应该对您的用户电子邮件进行编码或通过 POST 方法发送。
    2. 您当前的查询对SQL Injection开放
    3. 您的值必须用引号括起来。现在它转换为.. WHERE user_email = joe@anymail.com ,这是 SQL 语法错误。

    所以你的代码应该是这样的:

    $query = "SELECT * FROM wp_users WHERE user_email = %s";
    $result = $wpdb->get_results($wpdb->prepare($query, $email));
    

    【讨论】:

    猜你喜欢
    • 2010-09-07
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2012-01-23
    • 2016-08-15
    • 2013-03-26
    相关资源
    最近更新 更多