【问题标题】:Can't update custom user meta through Wordpress REST API无法通过 Wordpress REST API 更新自定义用户元
【发布时间】:2018-09-12 11:38:26
【问题描述】:

我正在开发一个通过 Wordpress REST API 获取和更新内容的网站。每当用户单击“为此添加书签”按钮时,我都会尝试更新用户的书签,因此我创建了以下register_rest_field 函数:

function handle_user_bookmarks() {
    register_rest_field( 'user', 'bookmarks', array(
        'get_callback' => array( $this, 'get_user_bookmarks' ),
        'update_callback' => array( $this, 'add_user_bookmarks' ),
        'schema' => null
    ));        
}   

function get_user_bookmarks( $user, $field_name, $request ) { 
    return get_user_meta( $user[ 'id' ], $field_name, true );
}

function add_user_bookmarks( $user, $meta_value ) { 
    $bookmarks = get_user_meta( $user[ 'id' ], 'bookmarks', false );
    if( $bookmarks ) {
        update_user_meta( $user[ 'id' ], 'bookmarks', $meta_value );
    } else {
        add_user_meta( $user[ 'id' ], 'bookmarks', $meta_value, true );
    }
} 

get_user_bookmarks 回调工作正常;相反,add_user_bookmarks 回调仅在我将$user[ 'id' ] 替换为get_user_metaupdate_user_metaadd_user_meta 中的“静态”ID 时才有效。换句话说,如果编码如下:

function add_user_bookmarks( $user, $meta_value ) {
    $bookmarks = get_user_meta( 1, 'bookmarks', false );
    if( $bookmarks ) {
        update_user_meta( 1, 'bookmarks', $meta_value );
    } else {
        add_user_meta( 1, 'bookmarks', $meta_value, true );
    }
}

问题显然出在用户 ID 上,那么如何在 add_user_bookmarkscallback 中检索它?

这是单击按钮时发出的 HTTP 请求,如果有帮助的话:

http://example.com/wp-json/wp/v2/users/1   (1 is the queried user's ID)

【问题讨论】:

  • 分享add_user_bookmarks的请求

标签: wordpress wordpress-rest-api


【解决方案1】:

找到了。我用$user->ID 替换了$user['id'](仅在add_user_bookmarks 中),然后就成功了。所以工作代码是:

function handle_user_bookmarks() {
    register_rest_field( 'user', 'bookmarks', array(
        'get_callback' => array( $this, 'get_user_bookmarks' ),
        'update_callback' => array( $this, 'add_user_bookmarks' ),
        'schema' => null
    ));        
}   

function get_user_bookmarks( $user, $field_name, $request ) { 
    return get_user_meta( $user[ 'id' ], $field_name, true );
}

function add_user_bookmarks( $user, $meta_value ) { 
    $bookmarks = get_user_meta( $user->ID, 'bookmarks', false );
    if( $bookmarks ) {
        update_user_meta( $user->ID, 'bookmarks', $meta_value );
    } else {
        add_user_meta( $user->ID, 'bookmarks', $meta_value, true );
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2021-10-31
    • 2017-09-23
    相关资源
    最近更新 更多