从WP REST API获取用户元数据

时间:2017-06-14 作者:Zach Tackett

我正在使用WordPress REST API和VueJS以及Axios(用于AJAX调用以获取/发布数据回站点)进行一个项目。然而,我需要能够从REST API访问用户的元数据,即“collapsed\\u widgets”,但我从GET响应中收到的数据是

"meta": [],
这也适用于所有用户,这很奇怪,因为那里应该有数据。

是否有任何方法可以为用户获取元数据?

1 个回复
最合适的回答,由SO网友:hwl 整理而成

调查register_rest_field() 向rest 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 );
   }
TheWP_REST_Meta_Fields class 也可能提供更有用的见解。

<小时>

Update per OP comment on registering custom routes

又快又脏的partial 实例坐在我面前的一些东西拼凑而成,但这不是一个有效的例子。

在您阅读文档时可能会有所帮助。遵循第一个register_rest_route, 它是GET 方法的回调,my_get_callback, 以及回调方法的使用WP_Rest_Request 班这应该有助于将这些步骤联系起来。我在评论中提到的文档将进入其他参数、参数等,当然还有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

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x