我正在尝试使用WP API v2并插入Postman的帖子。
如果我发布这个原始请求,它会创建一个帖子就好了:
{
"title": "Test Title",
"content": "Test Content",
}
但是,我正在尝试添加一些自定义字段值,我似乎无法让它们工作。此请求会创建一个帖子,但不会添加任何元字段:
{
"title": "Test Title",
"content": "Test Content",
"meta": {
"foo": "bar",
"foo2": "bar2"
}
}
如何通过API端点foo
将值foo2
和bar
的元字段bar2
和https://my-site.com/wp-json/wp/v2/posts
发布?
编辑:在GET请求中,自定义字段也不会被本地拉出。我把这段代码放在mu-plugin中:
add_filter( 'rest_prepare_post', 'xhynk_api_post_meta', 10, 3 );
function xhynk_api_post_meta( $data, $post, $context ){
$meta = get_post_custom( $post->ID );
if( $meta ) {
$data->data['meta'] = $meta;
}
return $data;
}
至少让我在GET请求中查看它。但是我仍然无法通过Postman将其发送到POST。即使添加"status": "publish"
,也会导致新帖子发布而不是默认情况下的草稿。我是否可以在API POST请求中使用任何钩子或过滤器来确保添加自定义字段?
答案 0 :(得分:7)
要在插入和更新时处理元数据,您可以使用操作rest_insert_ + post type
add_action("rest_insert_page", function (\WP_Post $post, $request, $creating) {
$metas = $request->get_param("meta");
if (is_array($metas)) {
foreach ($metas as $name => $value) {
update_post_meta($post->ID, $name, $value);
}
}
}, 10, 3);