Curl Post适用于用户元,但不适用于自定义用户元

时间:2018-02-02 作者:Yamona

我创建了一个自定义user\\u meta,但无法通过curl进行更新。

我可以使用user\\u meta完成此操作

curl --header "Authorization: Basic ACCESS_TOKEN" -X POST -d "description=New description" http://domain.com/wp-json/wp/v2/users/1
但我不能对自定义元执行相同的操作

curl --header "Authorization: Basic ACCESS_TOKEN" -X POST -d "user_continent=Asia" http://domain.com/wp-json/wp/v2/users/1

JSON screenshot

这可能会有所帮助

如何将自定义元添加到API:

add_action( \'rest_api_init\', \'adding_user_meta_rest\' );

function adding_user_meta_rest() {
$user_metas = array(\'account_psn_title\', \'account_psn_id\', \'account_steam_title\', \'account_steam_id\', \'account_twitch_title\', \'account_twitch_id\', \'account_xbox_title\', \'account_xbox_id\', \'account_youtube_title\', \'account_youtube_id\', \'_uw_balance\', \'user_continent\', \'user_platform\');
    foreach ($user_metas as $user_meta) {
        register_rest_field( \'user\',
            $user_meta,
            array(
                \'get_callback\'      => \'user_meta_callback\',
                \'update_callback\'   => \'user_meta_update_callback\',
                \'schema\'            => null,
            )
        );
    }

}
function user_meta_callback( $user, $field_name, $request) {
    return get_user_meta( $user[ \'id\' ], $field_name, true );
}
function user_meta_update_callback( $user, $field_name, $request) {
    update_user_meta( $user[ \'id\' ], $field_name, XXXX );
}
功能user_meta_update_callback 是我试图使这些自定义元可编辑。

我应该放什么user_meta_update_callback 代替XXXX?我做得对吗?

2 个回复
最合适的回答,由SO网友:mmm 整理而成

参数get_callback以及update_callback 接收不同的参数。

试试这个对字段有效的示例user_continent

add_action("rest_api_init", function () {


    register_rest_field(
          "user"
        , "user_continent"
        ,
        [
            "get_callback" => function ($user, $field_name, $request, $object_type) {

                return get_user_meta($user["id"], $field_name, TRUE);

            },
            "update_callback" => function ($value, $user, $field_name, $request, $object_type) {

                update_user_meta($user->ID, $field_name, $value);

            },
        ]
    );


});

SO网友:janh

您可以将该值作为第一个参数,也可以从$request中获取它,这是一个WP_REST_Request 对象因为你正在使用POST, 参数超出$request->get_body_params() 它将返回一个数组。如果您只需要实际的元值,那么不需要这样做。

您的回调函数应该如下所示:

function user_meta_update_callback( $value, $user, $field_name, $request ) {
    update_user_meta( $user[ \'id\' ], $field_name, $value );
}

结束

相关推荐

如何使用WordPress rest API更新/插入自定义域(元数据)数据?

我试图通过wordpress API添加自定义帖子数据(帖子元数据),但在更新/添加自定义帖子数据时遇到了困难。下面是我使用的代码。Code written in function.php add_action( \'rest_api_init\', \'create_api_posts_meta_field\' ); function create_api_posts_meta_field() { // register_rest_field ( \'name