In WordPress sind mehrere APIs integriert:
Standardmäßig geben sie keine benutzerdefinierten Beitragstypen oder geschützten Metaschlüssel zurück.
Ich möchte auf die geschützten Metafelder eines Plugins zugreifen. Ich habe versucht, den hier und hier gegebenen Beispielen zu folgen .
Ich habe es geschafft, dass die wp-json-API benutzerdefinierte Beitragstypen zurückgibt, indem ich diesen Code hinzufüge:
/**
* Add REST API support to an already registered post type.
*/
add_action( 'init', 'my_custom_post_type_rest_support', 25 );
function my_custom_post_type_rest_support() {
global $wp_post_types;
// be sure to set this to the name of your post type!
$post_type_name = 'tribe_venue';
if( isset( $wp_post_types[ $post_type_name ] ) ) {
$wp_post_types[$post_type_name]->show_in_rest = true;
$wp_post_types[$post_type_name]->rest_base = $post_type_name;
$wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller';
}
$post_type_name2 = 'tribe_events';
if( isset( $wp_post_types[ $post_type_name2 ] ) ) {
$wp_post_types[$post_type_name2]->show_in_rest = true;
$wp_post_types[$post_type_name2]->rest_base = $post_type_name2;
$wp_post_types[$post_type_name2]->rest_controller_class = 'WP_REST_Posts_Controller';
}
}
Ich konnte jedoch keine geschützten Metaschlüssel in die Antwort aufnehmen.
Ich habe den folgenden Code ausprobiert:
add_filter( 'is_protected_meta', function ( $protected, $key, $type ) {
if ( $type === 'tribe_venue' && $key === '_VenueVenue' ) {
return true;
}
return $protected;
}, 10, 3 );
add_filter( 'rae_include_protected_meta', '__return_true' );
und den folgenden Code:
function custom_rest_api_allowed_public_metadata($allowed_meta_keys){
$allowed_meta_keys[] = '_VenueVenue';
$allowed_meta_keys[] = '_VenueAddress';
$allowed_meta_keys[] = '_VenueCity';
return $allowed_meta_keys;
}
add_filter( 'rest_api_allowed_public_metadata', 'custom_rest_api_allowed_public_metadata' );
aber beides funktioniert nicht.
Weiß jemand, was benötigt wird, um solche geschützten Felder über eine der APIs zugänglich zu machen? Gibt es irgendwo ein funktionierendes Beispiel?