Je souhaite modifier l'API REST (média) et ajouter un nouveau champ appelé media_category
. J'ai d'abord essayé avec le post-terminal, cela a bien fonctionné, mais lorsque j'essaie de la même manière avec le média, cela ne fonctionne pas.
Le type d'objet du média d'extrémité est-il autre chose que le média?
Mon code actuel:
<?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'] );
}
Si je remplace la media
dans register_rest_field
par post
, cela fonctionne pour le noeud final. Mais cela ne fonctionne pas pour le média final.
Quelqu'un a une solution pour ça?
J'ai trouvé la solution à mon problème. Le type d'objet pour le média n'est pas media
, c'est juste attachment
. Donc, le code suivant fonctionne pour moi:
<?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'] );
}