WP rest api - POST 端点并存储在用户元数据中
WP rest api - POST endpoint and store in the user meta data
我正在尝试在 Wordpress 上创建一个自定义端点来处理 WooCommerce 身份验证密钥。
在高级别,当您使用 rest api 生成身份验证密钥时,这些 API 密钥将在单独的 POST 请求中发回。
所以发生的事情是,我的 React 网站将授权请求提交给 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_key
、consumer_secret
和 key_permissions
存储在与 user_id
相关的用户元数据中。
我的目标是在提取包括那些元数据在内的用户信息时能够获得密钥。
默认情况下这些字段是新的,所以我需要确保如果数据库中不存在 consumer_key
、consumer_secret
和 key_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
添加数据
感谢您的帮助
如果您只缺少数据库存储部分,那么使用 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 已经通过 missing -> create or existing -> update
进行了检查
我正在尝试在 Wordpress 上创建一个自定义端点来处理 WooCommerce 身份验证密钥。
在高级别,当您使用 rest api 生成身份验证密钥时,这些 API 密钥将在单独的 POST 请求中发回。
所以发生的事情是,我的 React 网站将授权请求提交给 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_key
、consumer_secret
和 key_permissions
存储在与 user_id
相关的用户元数据中。
我的目标是在提取包括那些元数据在内的用户信息时能够获得密钥。
默认情况下这些字段是新的,所以我需要确保如果数据库中不存在 consumer_key
、consumer_secret
和 key_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
添加数据感谢您的帮助
如果您只缺少数据库存储部分,那么使用 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 已经通过 missing -> create or existing -> update
进行了检查