web-dev-qa-db-fra.com

register_rest_field pour les champs de taxonomie personnalisés associés au type de publication personnalisé

J'essaie d'enregistrer un champ de repos pour les méta-champs personnalisés de ma taxonomie. J'ai suivi le tutoriel à Modification des réponses . Le code fonctionnait très bien pour l'ajout d'un champ de repos pour les métadonnées de publication pour les types de publication personnalisés, mais lorsque j'ai essayé d'ajouter le code de repos suivant pour ma taxonomie personnalisée, le code suivant ne fonctionnait pas. Est-il possible de faire ce que j'essaie de faire?

add_action( 'rest_api_init', 'register_rest_field_for_custom_taxonomy_location' );

//REGISTER
function register_rest_field_for_custom_taxonomy_location() {
    register_rest_field( 'location',
        'location_code',
        array(
            'get_callback'    => 'location_get_term_meta',
            'update_callback' => 'location_update_term_meta',
            'schema' => null;
        )
    );
}

//WRITE
function location_update_term_meta_field( $value, $object, $field_name ) {
    if ( ! $value || ! is_string( $value ) ) {
        return;
    }
    return update_term_meta( $object->ID, $field_name, $value );
}

//READ
function location_get_term_meta_field( $object, $field_name, $request ) {
    return get_term_meta( $object[ 'id' ], $field_name, true );
}
1
Haimanot

Les deux rappels dans la fonction register_rest_field_for_custom_taxonomy_location () sont mal orthographiés.

changement

'get_callback'    => 'location_get_term_meta',
'update_callback' => 'location_update_term_meta',

à

'get_callback'    => 'location_get_term_meta_field',
'update_callback' => 'location_update_term_meta_field',

Code d'enregistrement

function register_rest_field_for_custom_taxonomy_location() {
    register_rest_field( 'location',
        'location_code',
        array(
            'get_callback'    => 'location_get_term_meta_field',
            'update_callback' => 'location_update_term_meta_field',
            'schema' => null,
        )
    );
1
friendlyfire