使用curl

时间:2018-02-14 12:22:07

标签: php wordpress curl

我想使用来自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属性?

1 个答案:

答案 0 :(得分:0)

根据使用register_rest_field

的文档

register_rest_field函数是向REST API响应对象添加字段的最灵活方式。它接受三个参数:

  1. $ object_type:对象的名称,字符串或数组 正在注册该字段的对象的名称。这个 可能是核心类型,如“post”,“terms”,“meta”,“user”或 “comment”,但也可以是自定义帖子类型的字符串名称。
  2. $ attribute:字段的名称。该名称将用于定义 响应对象中的键。
  3. $ args:一个数组,其中包含用于定义回调函数的键 检索字段的值('get_callback'),以更新 字段的值('update_callback'),以及定义其架构 (“模式”)。
  4.   

    在你的情况下$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'
            ),
        ) );
    } );