REST-API:扩展媒体-终端

时间:2017-03-30 作者:TheBalco

我想修改REST-API(媒体端点)并添加一个名为media_category.首先,我在post端点上尝试了这种方法,效果很好,但在媒体端点上尝试同样的方法时,效果并不理想。

媒体端点的对象类型是否为媒体以外的其他类型?

我的当前代码:

<?php
/**
 * Plugin Name: REST Response Modifier
 * Description: A simple plugin to modify the rest api
 * Author: TheBalco
 * Author URI: http://somepage.dev
 */

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

function tb_add_custom_rest_fields() {
    // schema
    $media_category_schema = array(
        \'description\'   => \'Categories of the media item\',
        \'type\'          => \'string\',
        \'context\'       => [\'view\']
    );

    // registering the field
    register_rest_field(
        \'media\',
        \'media_category\',
        [
            \'get_callback\'      => \'get_media_category\',
            \'update_callback\'   => null,
            \'schema\'            => $media_category_schema
        ]
    );
}

/**
 * Callback
 * @param  array            $object         The current post object
 * @param  string           $field_name     The name of the field
 * @param  WP_REST_request  $request        The current request
 * @return string                           The return value
 */
function get_media_category($object, $field_name, $request) {
    return \'this-is-a-test\';
    //return get_the_author_meta( \'display_name\', $object[\'author\'] );
}
如果我更换media 在里面register_rest_field 具有post, 它适用于post端点。但它不适用于媒体端点。

有人有办法吗?

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

我找到了解决问题的办法。媒体的对象类型不是media, 只是attachment. 因此,以下代码对我有效:

<?php
/**
 * Plugin Name: REST Response Modifier
 * Description: A simple plugin to modify the rest api
 * Author: TheBalco
 * Author URI: http://somepage.dev
 */

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

function tb_add_custom_rest_fields() {
    // schema
    $media_category_schema = array(
        \'description\'   => \'Categories of the media item\',
        \'type\'          => \'string\',
        \'context\'       => [\'view\']
    );

    // registering the field
    register_rest_field(
        \'attachment\',
        \'media_category\',
        [
            \'get_callback\'      => \'get_media_category\',
            \'update_callback\'   => null,
            \'schema\'            => $media_category_schema
        ]
    );
}

/**
 * Callback
 * @param  array            $object         The current post object
 * @param  string           $field_name     The name of the field
 * @param  WP_REST_request  $request        The current request
 * @return string                           The return value
 */
function get_media_category($object, $field_name, $request) {
    return \'this-is-a-test\';
    //return get_the_author_meta( \'display_name\', $object[\'author\'] );
}

相关推荐

创建帖子,包含来自远程API的数据

我需要一些帮助和指导。因此,我正在开发一个网站(自定义主题),目标是从远程API获取数据。我希望能够将数据存储在各个帖子中(一种自定义帖子类型),当有人向远程API添加或删除数据时,它应该会更新网站上的帖子。我使用的API的结构如下:https://pippinsplugins.com/edd-api/products我知道如何从中获取数据并解码JSON等。$url = \'https://pippinsplugins.com/edd-api/products\'; $username