web-dev-qa-db-fra.com

Obtenir des métadonnées utilisateur à partir de WP REST API

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?

6
Zach Tackett

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
5
hwl