it-swarm.com.de

Abrufen von Benutzer-Metadaten von WP REST API

Ich arbeite an einem Projekt mit der WordPress REST-API und VueJS zusammen mit Axios (für die AJAX-Aufrufe zum Abrufen/POST-Daten zurück zur Site). Ich muss jedoch in der Lage sein, über die REST API auf die Metadaten eines Benutzers zuzugreifen, z. B. 'collapsed_widgets'. Die Daten, die ich von der GET-Antwort zurückerhalte, sind jedoch

"meta": [],

Dies ist auch für ALLE Benutzer, was seltsam ist, da dort Daten sein sollten.

Gibt es überhaupt etwas, um die Metadaten für Benutzer zu erhalten?

6
Zach Tackett

Schauen Sie in register_rest_field() , um Meta mit der restlichen API zu registrieren.

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

Und setzen Sie dann Ihr get_user_meta-Bit in den Rückruf ein.

   function user_meta_callback( $user, $field_name, $request) {
       return get_user_meta( $user[ 'id' ], $field_name, true );
   }

Die Klasse WP_REST_Meta_Fields bietet möglicherweise auch nützlichere Einblicke.


Update per OP Kommentar zur Registrierung von benutzerdefinierten Routen

Ein schnelles und schmutziges partielles Beispiel. Aus ein paar Sachen gepflastert, die vor mir sitzen, aber es ist kein funktionierendes Beispiel.

Kann beim Lesen von Dokumenten hilfreich sein. Verfolgen Sie die Verbindung zwischen dem ersten register_rest_route, dem Rückruf der GET-Methode, my_get_callback unten, und der Verwendung der WP_Rest_Request-Klasse durch die Rückrufmethode. Es sollte helfen, eine Verbindung der Schritte zu zeichnen. Die Dokumente, die ich in den Kommentaren erwähnt habe, werden in andere Argumente, Parameter usw. und natürlich in das permissions_callback-Zeug aufgenommen.

Ich hoffe es hilft.

        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