如何在API v2中将作者元放入POST终结点

时间:2016-04-21 作者:Mr Brimm

我试图输出json结果中的所有字段,但似乎没有正确使用该对象。我想向post端点添加作者元字段。

这行不通

    function slug_show_author_meta( $object, $field_name, $request ) {
      return  get_the_author_meta( $object[ \'id\' ], $field_name );
    }
这是但只给了我一个字段

    function slug_show_author_meta( ) {
      return  get_the_author_meta(\'user_nicename\');
    }
理想情况下,我只想获得user\\u nicenaem、user\\u email、display\\u name、nicename、first\\u name和last\\u name。谢谢

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

This should work:

function wpse_20160421_get_author_meta($object, $field_name, $request) {

    $user_data = get_userdata($object[\'author\']); // get user data from author ID.

    $array_data = (array)($user_data->data); // object to array conversion.

    $array_data[\'first_name\'] = get_user_meta($object[\'author\'], \'first_name\', true);
    $array_data[\'last_name\']  = get_user_meta($object[\'author\'], \'last_name\', true);

    // prevent user enumeration.
    unset($array_data[\'user_login\']);
    unset($array_data[\'user_pass\']);
    unset($array_data[\'user_activation_key\']);

    return array_filter($array_data);

}

function wpse_20160421_register_author_meta_rest_field() {

    register_rest_field(\'post\', \'author_meta\', array(
        \'get_callback\'    => \'wpse_20160421_get_author_meta\',
        \'update_callback\' => null,
        \'schema\'          => null,
    ));

}
add_action(\'rest_api_init\', \'wpse_20160421_register_author_meta_rest_field\');
SO网友:Gecko Room

这对我很有用:

add_action( \'rest_api_init\', \'user_puntuacio\' );

function user_puntuacio() {
    register_rest_field( \'user\', \'puntuacio\',
        array(
            \'get_callback\'    => \'get_user_puntuacio\',
            \'update_callback\' => null,
            \'schema\'          => null,
        )
    );
}


function get_user_puntuacio( $object, $field_name, $request ) {
    return get_user_meta( $object[ \'id\' ], \'puntuacio\', true );
}
请注意,“puntuacio”是我想要添加的自定义用户元。

SO网友:Mr Brimm

多亏了@Dan为我指明了正确的方向,这才成功。

    function slug_show_author_meta( $object ) {
       $post_author = (int) $object[\'author\'];
        $array_data = array();

        $array_data[\'login\'] = get_the_author_meta(\'login\');

        $array_data[\'email\'] = get_the_author_meta(\'email\');

        $array_data[\'user_nicename\'] = get_the_author_meta(\'user_nicename\');

        $array_data[\'first_name\'] = get_user_meta($post_author, \'first_name\', true);

        $array_data[\'last_name\'] = get_user_meta($post_author, \'last_name\', true);

        $array_data[\'nickname\'] = get_user_meta($post_author, \'nickname\', true);

        return array_filter($array_data);
    }
它返回

     "post_author_meta": {
     "login": "billy"
     "email": "[email protected]"
     "user_nicename": "billy"
     "first_name": "Billy"
     "last_name": "Boy"
     "nickname": "billy"
      }