/ / Benutzerdefinierte Benutzermetas können nicht über die Wordpress-REST-API aktualisiert werden: WordPress, WordPress-Rest-API

Kann benutzerdefinierte Benutzer-Meta über Wordpress REST API nicht aktualisieren - WordPress, Wordpress-Rest-API

Ich arbeite an einer Website, die Updates erhältInhalt über die Wordpress-REST-API. Ich versuche, die Lesezeichen eines Benutzers zu aktualisieren, wenn der Benutzer auf die Schaltfläche "Bookmark this" klickt. Ich habe daher Folgendes erstellt register_rest_field Funktion:

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 );
}
}

Das get_user_bookmarks Rückruf funktioniert gut; stattdessen die add_user_bookmarks Rückruf funktioniert nur wenn ich ersetze $user[ "id" ] mit einer "statischen" ID im get_user_meta, update_user_meta und add_user_meta. Mit anderen Worten funktioniert es, wenn es wie folgt codiert ist

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 );
}
}

Das Problem liegt eindeutig bei der Benutzer-ID, also wie kann ich sie in der add_user_bookmarksRuf zurück?

Hier "s die HTTP-Anfrage, die beim Klicken des Buttons gemacht wird, wenn das helfen soll:

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

Antworten:

2 für die Antwort № 1

Fand es. ich ersetzte $user["id"] mit $user->ID (in dem add_user_bookmarks nur) und boom, es hat funktioniert. Der Arbeitscode lautet also:

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 );
}
}