it-swarm.com.de

REST-API: Medienendpunkt erweitern

Ich möchte die REST-API (Media-Endpoint) ändern und ein neues Feld mit dem Namen media_category hinzufügen. Zuerst habe ich es mit dem Post-Endpoint versucht, das hat gut funktioniert, aber wenn ich es mit dem Media-Endpoint versuche, funktioniert es nicht.

Ist der Objekttyp für den Medienendpunkt etwas anderes als Medien?

Mein aktueller Code:

<?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'] );
}

Wenn ich die media in register_rest_field durch post ersetze, funktioniert dies für den Post-Endpunkt. Für den Media-Endpunkt funktioniert es jedoch nicht.

Hat jemand eine Lösung dafür?

1
TheBalco

Ich habe die Lösung für mein Problem gefunden. Der Objekttyp für Medien ist nicht media, sondern nur attachment. Der folgende Code funktioniert also für mich:

<?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'] );
}
1
TheBalco