我正在开发一个通过Wordpress REST API获取和更新内容的网站。我试图在用户点击“#34;书签”时更新用户的书签。按钮,所以我创建了以下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_meta
,update_user_meta
和add_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_bookmarks
回调中检索它?
这是点击按钮时发出的HTTP请求,如果有帮助的话:
http://example.com/wp-json/wp/v2/users/1 (1 is the queried user's ID)
答案 0 :(得分:3)
找到它。我将$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 );
}
}