簡體   English   中英

如何獲得WordPress的REST API來包含用戶元數據?

[英]How do I get WordPress' REST API to include user metadata?

我已經建立了一個WordPress網站並添加了幾個用戶。 當我直接查看數據庫的wp_usermeta表時,那里有幾條記錄,因此用戶也確實有一些元數據。

根據文檔 ,請求用戶時應包含meta ,但是當我請求/wp-json/wp/v2/users所有meta字段均為空數組。

我想念什么? 如何通過REST API獲取有關用戶的元數據?

根據文檔的這一部分,我設法找到了一種更簡單的方法來完成此操作。

不知道將這段代碼放在哪里是最佳實踐。 由於我已經有一個與API相關的插件,因此我只在其中添加了代碼。

// legend:    <type>, <meta_key>, <config>
register_meta('user', 'nickname', array(
  "type" => "string",
  "show_in_rest" => true // this is the key part
));

現在我只需要弄清楚我需要哪些特定鍵:)

這不是我的,它位於: https : //wordpress.stackexchange.com/questions/270154/getting-user-meta-data-from-wp-rest-api

在此處編寫以供將來參考StackOverflow:

查看register_rest_field()以向其余api注冊meta。

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

然后將get_user_meta位放入回調中。

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

WP_REST_Meta_Fields類也可以提供更多有用的見解。


更新:關於注冊自定義路線

一個快速而骯臟的部分示例。 從擺在我面前的一些東西中湊了出來,但這不是一個可行的例子。

在您閱讀文檔時可能會有所幫助。 遵循第一個register_rest_route (下面是GET方法的回調my_get_callback)與回調方法對WP_Rest_Request類的使用之間的連接 應該有助於將步驟聯系起來。 我在評論中提到的文檔將進入其他args,params等,當然還會涉及Permissions_callback內容。

希望能幫助到你。

   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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM