Skip to content

Instantly share code, notes, and snippets.

@scottopolis
Last active April 18, 2020 19:13
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save scottopolis/52d00e2095d1e959d2ef to your computer and use it in GitHub Desktop.
Save scottopolis/52d00e2095d1e959d2ef to your computer and use it in GitHub Desktop.
Add user meta to the WP-API
<?php
/* Adds all user meta to the /wp-json/wp/v2/user/[id] endpoint */
function sb_user_meta( $data, $field_name, $request ) {
if( $data['id'] ){
$user_meta = get_user_meta( $data['id'] );
}
if ( !$user_meta ) {
return new WP_Error( 'No user meta found', 'No user meta found', array( 'status' => 404 ) );
}
foreach ($user_meta as $key => $value) {
$data[$key] = $value;
}
return $data;
}
add_action( 'rest_api_init', function () {
register_api_field( 'user',
'meta',
array(
'get_callback' => 'sb_user_meta',
'update_callback' => null, // add callback here for POST/PUT requests to update user meta
'schema' => null,
)
);
} );
@Yaffar
Copy link

Yaffar commented Sep 7, 2016

I used this code on my project and it works great, but I was wondering how can I update some of the meta through a POST method?

@radhitee
Copy link

how to i put this code in my project?

@Wohlfarth
Copy link

Works great thanks @scottopolis . I added it in the functions.php file as is and testing GET /wp-json/wp/v2/users/2 in Postman returns all the meta fields.

@patriciadenise99
Copy link

How will I update the user meta?

@davykiala
Copy link

@Wohlfath great ! Could you provide your functions.php please ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment