我昨天不得不这么做,我是这样做的。
就像你已经做的那样register_meta
显示在api中。
register_meta(\'user\', \'meta_key\', array(
"type" => "string",
"show_in_rest" => true,
"single" => true,
));
然后,您需要使用请求主体中的元值向用户端点发出POST或PUT请求。
我使用javascript的fetch
api,但您也可以使用ajax
或使用WordPresswp_remote_request()
作用
首先,我将javascript排入队列。
wp_register_script( \'theme-js\', get_theme_file_uri( \'./dist/scripts/main.js\' ), [ \'jquery\' ], \'\', true );
wp_localize_script(
\'theme-js\',
\'wpApiSettings\',
array(
\'root\' => esc_url_raw( rest_url() ), // Rest api root
\'nonce\' => wp_create_nonce( \'wp_rest\' ), // For auth
\'currentUser\' => get_current_user_id() ?: false,
)
);
wp_enqueue_script( \'theme-js\' );
然后设置fetch函数。
const fetchApi = function(route, data, method) {
if (!route) route = \'posts\'
if (!method) method = \'GET\'
return fetch(wpApiSettings.root + \'wp/v2/\' + route, {
method,
credentials: \'same-origin\',
body: JSON.stringify(data),
headers: {
\'X-WP-Nonce\': wpApiSettings.nonce,
\'Content-Type\': \'application/json\'
}
})
}
然后在需要时调用该函数。
fetchApi(
`users/${wpApiSettings.currentUser}`,
{
meta: {
meta_key: value
}
},
\'POST\'
)
.then(resp => {
console.log(resp)
if (resp.ok) {
return resp.json()
}
return false
})
.then(json => console.log(json))