【问题标题】:WP rest api - POST endpoint and store in the user meta dataWP rest api - POST 端点并存储在用户元数据中
【发布时间】:2021-01-15 19:13:31
【问题描述】:

我正在尝试在 Wordpress 上创建一个自定义端点来处理 WooCommerce 身份验证密钥。

当您使用 rest api 生成身份验证密钥时,这些 API 密钥将在单独的 POST 请求中发回。

所以发生的事情是,我的反应网站将授权请求提交给 WooCommerce/Wordpress 无头服务器,回调是 wordpress_url/xxx/v1/authkeys。它还需要支持https。

我正在尝试将此xxx/v1/authkeys 端点添加到 wordpress,目的是提取 JSON 数据,如下所示:

{
    "key_id": 1,
    "user_id": 123,
    "consumer_key": "ck_xxxxxxxxxxxxxxxx",
    "consumer_secret": "cs_xxxxxxxxxxxxxxxx",
    "key_permissions": "read_write"
}

并将consumer_keyconsumer_secretkey_permissions存储在与user_id相关的用户元数据中。

我的目标是在我拉取用户信息(包括那些元数据)时能够获取密钥。

默认情况下,这些字段是新的,所以我需要确保如果数据库中不存在 consumer_keyconsumer_secretkey_permissions,我们会创建这些字段。

目前,我已经在function.php中添加了:

function handle_woocommerce_keys($request){
    $user_id = $request[user_id];
    $consumer_key=$request[consumer_key];
    $consumer_secret=$request[consumer_secret];
    $key_permissions=$request[key_permissions];

/* search user_id in db and store the keys as meta_data */


    $response = new WP_REST_Response();
    $response->set_status(200);

    return $response;
}

add_action('rest_api_init', function () {
    register_rest_route( 'village/v1', 'authkeys',array(
        'methods'  => 'POST',
        'callback' => 'handle_woocommerce_keys'
    ));
});

由于我是 php/wordpress 的新手,我不知道如何在用户数据库中为特定的 user_id 添加数据

感谢您的帮助

【问题讨论】:

    标签: php wordpress rest woocommerce-rest-api


    【解决方案1】:

    如果您缺少的只是数据库存储部分,那么使用 WP 非常容易,您只需要这个:

    // Load wp user object (if needed)
    $user = new WP_User($user_id);
    // or just save the data..
    update_user_meta($user_id,'consumer_key',$consumer_key);
    update_user_meta($user_id,'consumer_secret',$consumer_secret);
    update_user_meta($user_id,'key_permissions',$key_permissions);
    

    update_user_meta 已经对缺失进行了检查 -> 创建或现有 -> 更新

    【讨论】:

    • 谢谢。如何检查值是否正确存储?我添加了这个,但我看不到字段
    • @Seb 所有数据都保存在 wp_usermeta 表中的数据库中,您可以使用用户 ID 和/或 meta_key 字段在其中搜索
    • 谢谢我发现了这个问题。我正在使用 Postman 并将 content-type 设置为 json
    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2018-10-31
    • 1970-01-01
    • 2017-11-19
    相关资源
    最近更新 更多