Je travaille sur un projet utilisant l'API WordPress REST, VueJS et Axios (pour les appels AJAX aux données GET/POST de retour sur le site). Cependant, je dois pouvoir accéder aux métadonnées d'un utilisateur, à savoir "collapsed_widgets" à partir de l'API REST, mais les données que je reçois depuis la réponse GET sont
"meta": [],
C’est aussi pour TOUS les utilisateurs, ce qui est bizarre parce qu’il devrait contenir des données.
Y a-t-il un moyen d'obtenir les métadonnées pour les utilisateurs?
Regardez dans register_rest_field()
pour enregistrer une méta avec l’API de repos.
add_action( 'rest_api_init', 'adding_user_meta_rest' );
function adding_user_meta_rest() {
register_rest_field( 'user',
'collapsed_widgets',
array(
'get_callback' => 'user_meta_callback',
'update_callback' => null,
'schema' => null,
)
);
}
Et puis mettez votre bit get_user_meta
dans le rappel.
function user_meta_callback( $user, $field_name, $request) {
return get_user_meta( $user[ 'id' ], $field_name, true );
}
La classe WP_REST_Meta_Fields peut également fournir des informations plus utiles.
Mise à jour par commentaire d'opération pour l'enregistrement d'itinéraires personnalisés
Un rapide et sale partial exemple. Il y a des pavés devant certains objets, mais ce n'est pas un exemple concret.
Peut vous aider lorsque vous lisez des documents. Suivez la connexion entre le premier register_rest_route
, il s'agit du callback de la méthode GET
, my_get_callback
, ci-dessous, et l'utilisation par la méthode de rappel de la classe WP_Rest_Request
. Cela devrait aider à établir un lien entre les étapes. Les documents que j'ai mentionnés dans les commentaires entreront dans d'autres arguments, paramètres, etc., et bien sûr dans le code permissions_callback
.
J'espère que ça aide.
class My_Extend_Rest extends WP_REST_Controller {
public function __construct() {
add_action( 'rest_api_init', array( $this, 'register_routes' ) );
}//end __construct
public function register_routes() {
$version = '1';
$namespace = 'my-fancy-namespace/v' . $version;
$base = 'my-route-base';
// so, site.com/wp-json/my-fancy-namespace/v2/my-route-base/
register_rest_route( $namespace, '/'. $base, array(
array(
'methods' => 'GET',
'callback' => array( $this, 'my_get_callback' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),
array(
'methods' => 'POST',
'callback' => array( $this, 'my_post_callback' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),)
);
$base2 = 'my-second-base';
// so, site.com/wp-json/my-fancy-namespace/v2/my-second-base/
register_rest_route( $namespace, '/'. $base2, array(
array(
'methods' => 'GET',
'callback' => array( $this, 'my_get_callback_two' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),
array(
'methods' => 'POST',
'callback' => array( $this, 'my_post_callback_two' ),
'permission_callback' => array( $this, 'key_permissions_check' ),
),)
);
}//register_routes
public function key_permissions_check() {
//do permissions check stuff
}
public function my_get_callback( WP_REST_Request $request ) {
//do stuff with $request
//see the methods mentioned in the comment
}//end
}//end class