webentwicklung-frage-antwort-db.com.de

register_rest_field für benutzerdefinierte Taxonomiefelder, die einem benutzerdefinierten Beitragstyp zugeordnet sind

Ich versuche, ein Rest-Feld für die benutzerdefinierten Metafelder meiner benutzerdefinierten Taxonomie zu registrieren. Ich habe das Tutorial unter Modifying Responses verfolgt. Der Code funktionierte hervorragend, um ein Rest-Feld für Post-Metadaten für benutzerdefinierte Post-Typen hinzuzufügen, aber als ich den folgenden Code versuchte, ein Rest-Feld für meine benutzerdefinierte Taxonomie hinzuzufügen, funktionierte es nicht. Ist es möglich zu tun, was ich versuche zu tun?

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

Beide Rückrufe in der Funktion register_rest_field_for_custom_taxonomy_location () sind falsch geschrieben.

veränderung

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

zu

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

Der Registercode

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