我想使用来自bash的curl更新post meta。
授权与基本身份验证一起正常工作,我可以使用register_rest_field函数中的预定义字符串更新post meta。
curl -X POST http://127.0.0.1/exampleporject/wp-json/wp/v2/custompost/53 -H 'content-type: application/json' -d '{"score":10}'
这是正在使用的curl命令。正在调用的REST API函数是:
register_rest_field( 'custompost', 'post-meta-fields', array(
'get_callback' => function ( $data ) {
return update_post_meta(53,'website_name',$data->score);
}
)
);
我无法获取$ data对象并获取curl命令中传递的score属性。
如何在curl命令中获取作为json数据传递的score属性?
答案 0 :(得分:0)
register_rest_field函数是向REST API响应对象添加字段的最灵活方式。它接受三个参数:
在你的情况下
$data
将是一个数组,如果没有,那么尝试下面的代码结构来修改响应
<?php
add_action( 'rest_api_init', function () {
register_rest_field( 'comment', 'karma', array(
'get_callback' => function( $comment_arr ) {
$comment_obj = get_comment( $comment_arr['id'] );
return (int) $comment_obj->comment_karma;
},
'update_callback' => function( $karma, $comment_obj ) {
$ret = wp_update_comment( array(
'comment_ID' => $comment_obj->comment_ID,
'comment_karma' => $karma
) );
if ( false === $ret ) {
return new WP_Error(
'rest_comment_karma_failed',
__( 'Failed to update comment karma.' ),
array( 'status' => 500 )
);
}
return true;
},
'schema' => array(
'description' => __( 'Comment karma.' ),
'type' => 'integer'
),
) );
} );